<!DOCTYPE html>
<html class="no-js" lang="en-GB">
    <head>
        <title>Use Regular Expressions to Search and Replace in Coda or TextMate | Oliver Davies</title>

        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        
        <meta property="og:url" content="https://www.oliverdavies.uk/blog/2010/11/04/use-regular-expressions-search-and-replace-coda-or-textmate">
<meta property="og:title" content="Use Regular Expressions to Search and Replace in Coda or TextMate"/>



    <meta property="og:image" content="https://www.oliverdavies.uk/assets/images/me-precedent.jpg"/>
    <meta property="og:image:height" content="327"/>
    <meta property="og:image:type" content="image/jpg">
    <meta property="og:image:width" content="327"/>



        <link rel="stylesheet" href="https://www.oliverdavies.uk/assets/css/main.css">
            <link rel="stylesheet" href="https://www.oliverdavies.uk/assets/css/blog-post.css">

                    <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=57" sizes="57x57">
                    <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=114" sizes="114x114">
                    <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=72" sizes="72x72">
                    <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=144" sizes="144x144">
                    <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=60" sizes="60x60">
                    <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=120" sizes="120x120">
                    <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=76" sizes="76x76">
                    <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=152" sizes="152x152">
        
                    <link rel="icon" href="/assets/images/me-precedent.jpg?s=160" sizes="160x160">
                    <link rel="icon" href="/assets/images/me-precedent.jpg?s=96" sizes="96x96">
                    <link rel="icon" href="/assets/images/me-precedent.jpg?s=32" sizes="32x32">
                    <link rel="icon" href="/assets/images/me-precedent.jpg?s=16" sizes="16x16">
            </head>
    <body class="">
        <nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="https://www.oliverdavies.uk/">Oliver Davies</a>
        </div>

        <div id="navbar" class="collapse navbar-collapse" role="navigation">
            <ul class="nav navbar-nav">
                <li class="">
                    <a href="/">About</a>
                </li>

                <li class="">
                    <a href="/experience">Experience</a>
                </li>

                <li class="">
                    <a href="/testimonials">Testimonials</a>
                </li>

                <li class="">
                    <a href="/talks">Talks</a>
                </li>

                <li class="active">
                    <a href="/blog">Blog</a>
                </li>

                <li class="">
                    <a href="/contact">Contact</a>
                </li>
            </ul>
        </div>    </div>
</nav>

        <div class="container">
            <div class="row">
                <main class="col-md-9">
                                            <h1>Use Regular Expressions to Search and Replace in Coda or TextMate</h1>

<p class="posted text-light">4th November 2010</p>

    <p>As in <a href="/blog/add-taxonomy-term-multiple-nodes-using-sql/" title="Quickly adding a taxonomy term to multiple nodes using SQL">the original post</a>, I'd generated a list of node ID values, and needed to add structure the SQL update statment formatted in a certain way. However, I changed my inital query slightly to out put the same nid value twice.</p>

<pre><code class="language-sql">SELECT nid, nid FROM node WHERE TYPE = 'blog' ORDER BY nid ASC;
</code></pre>

<p>Then, I could select all of the returned rows, copy the values, and paste them into Coda:</p>

<p>As before, I needed my SQL update statement to be in the following format:</p>

<pre><code class="language-sql">INSERT INTO term_node VALUE (nid, vid, tid), (nid2, vid2, tid);
</code></pre>

<p>As I mentioned previously, the nid and vid values are the same for each node, and the tid will remain constant. In this case, the tid value that I needed to use was '63'.</p>

<p>So, using the 'Find and Replace' function within Coda, combined with <a href="http://en.wikipedia.org/wiki/Regular_expression">regular expressions</a> (regex), I can easily format the values as needed. To begin with, I need to ensure that the RegEx search option is enabled, and that I'm using the correct escape character.</p>

<p>The first thing that I wanted to do was add the seperating comma between the two values. To do this, I 
perform a search for <code>\s*\t</code>. This searches for everything that is whitespace AND is a tab value. I can then add the comma as the replacement for each result.</p>

<p>All 31 lines have been changed.</p>

<p>Next, I can use <code>\n</code> to target the lines between the rows. I'll replace it with the next comma, the number 63 (the tid value), the closing bracket, another comma, re-add the line and add the opening bracket.</p>

<p>The only two lines that aren't changed are the first and last, as they don't have any line breaks following them. I can complete these lines manually. Now all I need to do is add the beginning of the SQL update statement, then copy and paste it into Sequel Pro.</p>

                <p class="tags">
        Tags:
                    <a href="https://www.oliverdavies.uk/blog/tags/taxonomy">taxonomy</a>,                     <a href="https://www.oliverdavies.uk/blog/tags/sequel-pro">sequel-pro</a>,                     <a href="https://www.oliverdavies.uk/blog/tags/database">database</a>,                     <a href="https://www.oliverdavies.uk/blog/tags/coda">coda</a>,                     <a href="https://www.oliverdavies.uk/blog/tags/regular-expression">regular-expression</a>,                     <a href="https://www.oliverdavies.uk/blog/tags/textmate">textmate</a>            </p>
    <div class="post-pager is-flex">
            <div class="is-half">
           <a href="/blog/2010/10/22/create-better-photo-gallery-drupal-part-21">
                &laquo; Create a Better Photo Gallery in Drupal - Part 2.1
            </a>
        </div>
    
            <div class="is-half text-right">
            <a href="/blog/2011/02/14/easily-embed-typekit-fonts-your-drupal-website">
                Easily Embed TypeKit Fonts into your Drupal Website &raquo;
            </a>
        </div>
    </div>
    <div class="about-author">
    <h2>About the Author</h2>

    <img src="//www.oliverdavies.uk/assets/images/me-precedent.jpg" alt="Picture of Oliver" class="img-circle">

    <p>Oliver Davies is a Web Developer, System Administrator and Drupal specialist based in the UK. He is a Senior Developer at <a href="https://microserve.io">Microserve</a> and also provides freelance consultancy services for Drupal websites, PHP applications and Linux servers.</p>
</div>
                                    </main>

                                    <div class="col-md-3">
                                                    <div class="panel badges text-center">
    <a class="badge--da-member" href="https://assoc.drupal.org/membership" title="I’m a Drupal Association member.">
        <img
            src="//www.oliverdavies.uk/assets/images/da-individual-member.png"
            alt="Drupal Association Individual Member"
            width="152"
            >
    </a>

    <a href="http://drupalcores.com/#opdavies">
        <img
            alt="I built Drupal 8 with hand holding a wrench on blue background"
            src="//www.oliverdavies.uk/assets/images/drupal-8.jpg"
            />
    </a>

    <img
        src="//www.oliverdavies.uk/assets/images/badges/acquia-certified-developer-drupal-8.png"
        alt="Acquia Certified Developer - Drupal 8 Exam Badge"
        height="147" width="147"
        />

    <a href="http://conference.phpnw.org.uk/phpnw17">
        <img src="//www.oliverdavies.uk/assets/images/badges/phpnw17.png" alt="">
    </a>
</div>
                            <div class="availability panel panel-default">
    <div class="panel-heading">Availability</div>

    <div class="panel-body">
                    <p>
    <i class="fa fa-thumbs-o-up text-warning"></i>

    
    Currently have limited part-time capacity
</p>
                    <p>
    <i class="fa fa-thumbs-o-down text-danger"></i>

    Currently no spare full-time capacity.
    
</p>
            </div>
</div>
                                <div class="latest-posts panel panel-default">
        <div class="latest-posts__heading panel-heading">Latest blog posts</div>

        <ul class="list-group">
                            <li class="post list-group-item">
                    <span class="post__title">
                        <a href="/blog/2017/07/13/publishing-sculpin-sites-with-github-pages">
                            Publishing Sculpin Sites with GitHub Pages
                        </a>
                    </span> -
                    <span class="post__date">13th July, 2017</span>
                </li>
                            <li class="post list-group-item">
                    <span class="post__title">
                        <a href="/blog/2017/06/09/introducing-the-drupal-meetups-twitterbot">
                            Introducing the Drupal Meetups Twitterbot
                        </a>
                    </span> -
                    <span class="post__date">9th June, 2017</span>
                </li>
                            <li class="post list-group-item">
                    <span class="post__title">
                        <a href="/blog/2017/05/20/turning-drupal-module-into-feature">
                            Turning Your Custom Drupal Module into a Feature
                        </a>
                    </span> -
                    <span class="post__date">20th May, 2017</span>
                </li>
                    </ul>
    </div>
                                                                        </div>
                
            </div>        </div>
        <footer class="container">
            <p class="copyright">
                &copy; 2010-2017 Oliver Davies. Built with <a href="https://sculpin.io">Sculpin</a>.
            </p>

            <div class="meetups">
    <h2>Things that I organise</h2>
    <ul>
                    <li class="meetups--drupal-bristol">
                <a href="http://www.drupalbristol.org.uk" title="Drupal Bristol">
                    <img
                        src="//www.oliverdavies.uk/assets/images/meetups/drupal-bristol.jpeg"
                        alt="Drupal Bristol logo"
                    >
                </a>
            </li>
                    <li class="meetups--drupalcamp-bristol">
                <a href="http://www.drupalcampbristol.co.uk" title="DrupalCamp Bristol">
                    <img
                        src="//www.oliverdavies.uk/assets/images/meetups/drupalcamp-bristol.png"
                        alt="DrupalCamp Bristol logo"
                    >
                </a>
            </li>
                    <li class="meetups--phpsw">
                <a href="http://phpsw.uk" title="PHPSW">
                    <img
                        src="//www.oliverdavies.uk/assets/images/meetups/phpsw.jpeg"
                        alt="PHPSW logo"
                    >
                </a>
            </li>
            </ul>
</div>
        </footer>

        <script src="https://www.oliverdavies.uk/assets/js/site.js"></script>

                    <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-11967257-1', 'auto'); ga('send', 'pageview');</script>
        
            </body>
</html>