[OS X TeX] Find and replace with regular expressions

Eric Jablow ejablow at cox.net
Mon Nov 19 19:44:16 CET 2007


---- Art Werschulz <agw at comcast.net> wrote: 
> You'd need to make sure that the dollar signs aren't preceded by  
> backslashes.  So if you replace "$" by "[^\\]$" in the original  
> regexp, you should be okay.  Please note that I have not tested this  
> out, and so it may need tweaking.  Don't try this on your only copy  
> of the file!!!

I'm sorry that I hadn't read the post I replied to fully.  He did make the same point I did.  The regex [^\\]\$ has a problem however; it never matches at the beginning of the searched text!  Suppose you aren't using multi-line mode.  Then, a $ at the beginning of a line isn't preceded by anything.  Furthermore, the character before would have to be captured too so it could be replaced by itself.  I'm guessing this Perlish regex would work:

qr{
    (?<![^$\\])        # Search for an expression not preceded by a dollar sign or backslash,
    [$]                    # Followed by a single $.
    (                       # Capture the content
        (?:            # which we don't capture
       [^$] |         # consisting a non-dollar sign,
        \\\$)         # or an (escaped)  backslash and an (escaped) $
   +                   # repeated at least once
    )                  # Finish with the capture
   [$]                  # Followed by the closing dollar sign
} xm                      # Free-form regex and multiline mode.

I prefer [$] to \$ because I don't have to esacpe any of the characters with backslashes.



More information about the macostex-archives mailing list