Difference between revisions of "Regular Expressions"
Jump to navigation
Jump to search
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | Regular expressions or regexp are used to find strings in text. | ||
+ | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 11: | Line 13: | ||
|^||Start of string||$||End of string | |^||Start of string||$||End of string | ||
|- | |- | ||
− | |*||0 or more matches of previous expression | + | |*||0 or more matches of previous expression||( )||Subexpression |
|- | |- | ||
− | |<nowiki>+</nowiki>||1 or more matches of previous expression | + | |<nowiki>+</nowiki>||1 or more matches of previous expression||[ ]||Match any of the characters between the [ ].<br>^as first character negates the match |
|- | |- | ||
− | |<nowiki>?</nowiki>||0 or 1 matches | + | |<nowiki>?</nowiki>||0 or 1 matches of previous expression.<br>Stop search as soon as next expression is found (non greedy) |
− | as soon as next expression is found (non greedy) | ||
|} | |} | ||
+ | |||
+ | |||
+ | ==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.<br>Example: | ||
+ | <syntaxhighlight lang=perl> | ||
+ | $_ = 'abcdefghi'; | ||
+ | /def/; | ||
+ | print "$`:$&:$'"; | ||
+ | # prints abc:def:ghi | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ;$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.<br>Example: | ||
+ | <syntaxhighlight lang=perl> | ||
+ | /Version: (.*)|Revision: (.*)/ | ||
+ | && ($rev = $+); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==Python== | ||
+ | Check [[Python:Strings#Regular_Expressions]] |
Revision as of 19:52, 29 August 2018
Regular expressions or regexp are used to find strings in text.
. | Any character except newline | \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 | $ | End of string |
* | 0 or more matches of previous expression | ( ) | Subexpression |
+ | 1 or more matches of previous expression | [ ] | Match any of the characters between the [ ]. ^as first character negates the match |
? | 0 or 1 matches of previous expression. Stop search as soon as next expression is found (non greedy) |
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 = $+);