Regular Expressions: Difference between revisions

New page: Regex is short for Regular Expression and is a syntax that allows for powerful pattern matching. One important use of regular expressions is in multi-line, multi-file editing. For exampl...
 
No edit summary
Line 20: Line 20:
PCRE was originally written for the Exim MTA, but is now used by many high-profile open source projects, including Apache, PHP, KDE, Postfix, Analog, and Nmap
PCRE was originally written for the Exim MTA, but is now used by many high-profile open source projects, including Apache, PHP, KDE, Postfix, Analog, and Nmap


== Should I use perl, bash, php, awk, sed, ...? ==
PHP has rich regular expression support. Perl obviously does too.  So when you're at the command line with BASH, what's the best way to quickly search some content for a pattern using a rich regular expression?  It can be hard to use bash because of all the quoting and interpolation.  But, let's look at a couple examples of searching a PHP configuration file for variable assignments.
Using perl, it's easy to print out only the parenthetical sub-expression
<source lang="bash">
perl -ne 'print $1 if /\$wgDBuser.*"(.*)"/' ./LocalSettings.php
</source>
Using grep, you have \K for variable length look-behind but it may not be available on older systems.  Thus, you may need to use cut
<source lang="bash">
grep -Po '(?<=\$wgDBuser).*"(.*)"' ./LocalSettings.php | cut -d \" -f 2
</source>


== Resources ==
== Resources ==