PCRE cheatsheet
Although similar to Perl, PCRE has some syntax that can be difficult to remember. When I'm working with CFEngine I often have to look it up. Here is a cheat-sheet to save time.
Description | Syntax | Note |
---|---|---|
Case insensitive | (?i) | Place at the beginning of the expression. |
Class | [ ] | \d and [0-9-] are equivalent. |
Digit | \d | \D for anything that is not a digit. |
Lookahead, negative | (?!*pattern* | |
Lookahead, positive | (?=*pattern* | |
Lookbehind, negative | (?<!*pattern* | |
Lookbehind, positive | (?<=*pattern* | |
None capture grouping | (?:)Group for logic and selection, but not capture. | |
Multi-line match | (?m) | Place at the beginning of the expression. Similar to Perl's m//g. |
Extened regex | (mxs) | Use this to make your regexes readable. A regex best practice. |
No magic | \Q \E | No special meaning to any characters between these. |
Range | {n,m} | Minimum of *n*, maximum of *m*. |
Whitespace | \s | \S for anything that is not whitespace. |
Notes
Beginning settings are combined. For example (?mi) considers multiple lines and is case insensitive.
Make your regexes readable by using the extened regex options. Consider this:
(?i)(?:linux|solaris|aix|hpux)
Versus this:
(?imsx)(?: linux | solaris | aix | hpux )
Now imagine using it on a very complex regex. See here for a more complex example.