1 Reply Latest reply on Mar 8, 2012 8:48 AM by [Jongware]

    Regular Expression to Locate Words with ® Character

    kmc27 Level 1

      I want to identify all the words in a document that are followed by the register mark (®) symbol.

       

      I built, what I thought was a regular expression that would search for a register mark preceeded by alpha number characters and a space. So if my text contained the sentence "Adobe InDesign® is a great product.", the regular expression would find "InDesign®"

       

      Below is the regular expression I composed. It grabs anything with a register mark, not just the register marks preceded by a space and alpha numeric characters. Where did I go wrong? I though the \s would restrict the search to complete words with a register mark.

       

      \s[a-zA-Z0-9]|®

        • 1. Re: Regular Expression to Locate Words with ® Character
          [Jongware] Most Valuable Participant

          \s is the special GREP code for "any kind of space" -- a regular space, a tab, hard return, or any of ID's own white space codes. It has nothing to do with "complete words", because a word can appear at the start of a story, without any preceding space. It would also not find "InDesign®" because there is no space before it, there is a double quote instead.

           

          Your GREP does not work because, well, you got the general idea (words may consist of the set of characters "a-z", "A-Z", and "0-9") but since you use the [..] without any other code, GREP will apply this rule once -- per character. If you want to find words of more than one character, you need to tell GREP "one or more of these, please": with a +.

           

          Second, where did that | come from? It's the OR operator. Essentially, you are looking for

           

                any space followed by one character from the set "a-z", "A-Z", and "0-9"

          OR

                the ® character

           

          The 'word break' you were looking for is this code: \b, so you could search for "\b[a-zA-Z0-9]+" (note the '+' to allow more than one instance) -- but it's not necessary, because by default GREP grabs as much as it can. The set 'a-zA-Z0-9' etc. describes the allowed "word" characters, but you might want to prefer these: \l (ell) and \u for all lowercase and all uppercase characters -- they are shorter, and they automatically include accented characters, Greek, Russian, and a lot more. Similar, \d (for "digits") is the short-cut for "0-9". And even better: \w is the shortcut for "word character", i.e., your set but then shorter and a bit better.

           

          Try this one:

           

          \w+~r