Regular Expressions

From wiki
Revision as of 13:33, 14 June 2022 by Hdridder (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Regular expressions or regexp are used to find strings in text.

Perl, PHP and Python support all in below table. Bash and SQL only support the POSIX part.

. Any character except newline (POSIX) \c Control character
\d Digit \D non Digit
\s Whitespace \S non Whitespace
\w Word character [A-Za-z0-9] \W non Word character
^ Start of string (POSIX) $ End of string (POSIX)
* 0 or more matches of previous expression (POSIX) ( ) Subexpression (POSIX)
+ 1 or more matches of previous expression (POSIX) [ ] Match any of the characters between the [ ].
^as first character negates the match (POSIX)
? 0 or 1 matches of previous expression.
Stop search as soon as next expression is found (non greedy) (POSIX)
{x,y} Match the previous expression between x an y times.
When y is ommited match exactly x times (POSIX)
\n Refers to the Nth subexpression (POSIX)

Examples

/[^/]*$
Match last / and everything following

Perl

perl -lne 'print $1 if (/<regexp(subexp)>/)'
Commandline to print the first subexp in a match.
$var =~ /<pattern>/
Generic syntax, this expression is true if the pattern is matched in $var
@array = $var =~ m/<pattern>/g;
Put all matches (or all first submatches) of <pattern> in var into @array

Following variables are when a match is made:

$&
Contains the string matched by the last pattern match
$`
The string preceding whatever was matched by the last pattern match, not counting patterns matched in nested blocks that have been exited already.
$'
The string following whatever was matched by the last pattern match, not counting patterns matched in nested blocks that have been exited already.
Example:
    $_ = 'abcdefghi';
    /def/;
    print "$`:$&:$'";
    # prints abc:def:ghi
$1
String matched by the first subexpression.
$+
The last bracket matched by the last search pattern. This is useful if you don't know which of a set of alternative patterns matched.
Example:
    /Version: (.*)|Revision: (.*)/
    && ($rev = $+);

Python

Check Python:Strings#Regular_Expressions_(regexp)