Perl regex: Difference between revisions
from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
→Details: () replacement vars; formatter |
→Examples: more examples; fixed error in first example |
||
| Line 6: | Line 6: | ||
==Details== | ==Details== | ||
Special characters in regex: | Special characters in regex: | ||
* | * . = any character | ||
* | * * = 0 or more of previous character | ||
* | * ^ = following string begins the line (except [^...] means "not these characters") | ||
* | * $ = preceding string ends the line | ||
* | * [] = list of characters which can satisfy the match at this position | ||
* | * {} = # of repetitions of previous character | ||
* | * | = alternatives | ||
* + = 1 or more of previous character | |||
* | * ''a''-''b'' = range of characters from ''a'' to ''b'' (must be inside [] to be position-sensitive?) | ||
* ''a'' - ''b'' = range of characters from ''a'' to ''b'' (must be inside [] to be position-sensitive? | |||
Operators used to invoke regex: | Operators used to invoke regex: | ||
* | * =~ returns TRUE if pattern matches | ||
* | * !~ returns FALSE if pattern matches | ||
* | * s/''pattern''/''replacement''/ replaces ''pattern'' with ''replacement'' | ||
==Examples== | ==Examples== | ||
* Replace "thingy" with "stuffs" in $string: | * Replace "thingy" with "stuffs" in $string: | ||
** $string = s/thingy/stuffs/; | ** $string =~ s/thingy/stuffs/; | ||
* Keep only the part of $string before the final "/" (using "|" as the delimiter instead of "/"): | |||
** $string =~ s|(.*)/[^/]*|$1|; | |||
* ...before the final "-": | |||
** $string =~ s|(.*)-[^-]*|$1|; | |||
* ...before the final ".": | |||
** $string =~ s|(.*)\.[^\.]*|$1|; | |||
* ...''after'' the final "." | |||
** $string =~ s|^.+\.(.+$)|$1|; | |||
Revision as of 19:22, 3 March 2006
Computing: Programming: Perl: regex
This article explains regular expressions in terms understandable to mere mortals, and also how to use them in Perl.
Related Articles
- regex: manpage documentation
Details
Special characters in regex:
- . = any character
- * = 0 or more of previous character
- ^ = following string begins the line (except [^...] means "not these characters")
- $ = preceding string ends the line
- [] = list of characters which can satisfy the match at this position
- {} = # of repetitions of previous character
- | = alternatives
- + = 1 or more of previous character
- a-b = range of characters from a to b (must be inside [] to be position-sensitive?)
Operators used to invoke regex:
- =~ returns TRUE if pattern matches
- !~ returns FALSE if pattern matches
- s/pattern/replacement/ replaces pattern with replacement
Examples
- Replace "thingy" with "stuffs" in $string:
- $string =~ s/thingy/stuffs/;
- Keep only the part of $string before the final "/" (using "|" as the delimiter instead of "/"):
- $string =~ s|(.*)/[^/]*|$1|;
- ...before the final "-":
- $string =~ s|(.*)-[^-]*|$1|;
- ...before the final ".":
- $string =~ s|(.*)\.[^\.]*|$1|;
- ...after the final "."
- $string =~ s|^.+\.(.+$)|$1|;
