┬ ΣαφφεΘ πδαΓσ ε∩Φ±√Γασ≥± ±Φφ≥αΩ±Φ± ≡σπ≤δ ≡φ√⌡ Γ√≡αµσφΦΘ. ╫α∙σ Γ±σπε Γ Perl εφΦ Φ±∩εδⁿτ≤■≥± Γ ε∩σ≡α≥ε≡α⌡ ∩εΦ±Ωα Φ τα∞σφ√ ≥αΩΦ⌡ ΩαΩ s//, m/, ε∩σ≡α≥ε≡α⌡ ±Γ τΩΦ =~ ΦδΦ != Φ ≥.Σ. ╩αΩ ∩≡αΓΦδε Γ±σ ²≥Φ ε∩σ≡α≥ε≡√ Φ∞σ■≥ ±⌡εµΦσ ε∩÷ΦΦ ≥αΩΦσ ΩαΩ:
i | - φσ ≡ατδΦ≈α≥ⁿ ±≥≡ε≈φ√σ Φ ταπδαΓφ√σ ß≤ΩΓ√. |
m | - ±≈Φ≥α≥ⁿ ±≥≡εΩ≤ ∞φεπε±≥≡ε≈φεΘ. |
s | - εΣφε±≥≡ε≈φα ±≥≡εΩα. |
x | - ≡α±°Φ≡σφφ√Θ ±Φφ≥αΩ±Φ± ( Φ±∩εδⁿτεΓαφΦσ ∩≡εßσδεΓ Φ Ωε∞∞σφ≥α≡ΦσΓ) |
╬ß√≈φε Γ±σ ²≥Φ ε∩÷ΦΦ εßετφα≈α■≥ ΩαΩ '/x'. ╚⌡ ∞εµφε Φ±∩εδⁿτεΓα≥ⁿ Σαµσ Γφ≤≥≡Φ °αßδεφεΓ, Φ±∩εδⁿτ≤ φεΓ≤■ Ωεφ±≥≡≤Ω÷Φ■ (?...)
╨σπ≤δ ≡φ√σ Γ√≡αµσφΦ ΦδΦ °αßδεφ√ (pattern) ≥ε µσ ±α∞εσ, ≈≥ε Φ regexp ∩≡ε÷σΣ≤≡√ Γ Unix. ┬√≡αµσφΦ Φ ±Φφ≥αΩ±Φ± ταΦ∞±≥ΓεΓαφ√ Φτ ±ΓεßεΣφε ≡α±∩≡ε±≥≡αφ σ∞√⌡ ∩≡ε÷σΣ≤≡ V8 ├σφ≡Φ ╤∩σφ±σ≡α (Henry Spencer), ≥α∞ µσ εφΦ ∩εΣ≡εßφε Φ ε∩Φ±αφ√.
┬ °αßδεφα⌡ Φ±∩εδⁿτ≤■≥± ±δσΣ≤■∙Φσ ∞σ≥α±Φ∞Γεδ√ (±Φ∞Γεδ√ εßετφα≈α■∙Φσ π≡≤∩∩√ Σ≡≤πΦ⌡ ±Φ∞ΓεδεΓ) ≈α±≥ε φατ√Γασ∞√σ egrep - ±≥αφΣα≡≥ε∞:
\ | - ±≈Φ≥α≥ⁿ ±δσΣ≤■∙ΦΘ ∞σ≥α±Φ∞Γεδ ΩαΩ εß√≈φ√Θ ±Φ∞Γεδ. |
^ | - φα≈αδε ±≥≡εΩΦ |
. | - εΣΦφ ∩≡εΦτΓεδⁿφ√Θ ±Φ∞Γεδ. ╩≡ε∞σ '\n' - Ωεφσ÷ ±≥≡εΩΦ. |
$ | - Ωεφσ÷ ±≥≡εΩΦ |
| | - αδⁿ≥σ≡φα≥ΦΓα (ΦδΦ) |
() | - π≡≤∩∩Φ≡εΓΩα |
[] | - Ωδα±± ±Φ∞ΓεδεΓ |
╠σ≥α±Φ∞Γεδ√ Φ∞σ■≥ ∞εΣΦ⌠ΦΩα≥ε≡√ (∩Φ°≤≥± ∩ε±δσ ∞σ≥α±Φ∞Γεδα):
* | - ∩εΓ≥ε≡ σ≥± 0 ΦδΦ ßεδⁿ°σσ ≈Φ±δε ≡ατ |
+ | - -//- 1 ΦδΦ ßεδⁿ°σσ ≈Φ±δε ≡ατ |
? | - 1 ΦδΦ 0 ≡ατ |
{n} | - ≥ε≈φε n ≡ατ |
{n,} | - ∩ε ∞σφⁿ°σΘ ∞σ≡σ ≡ατ |
{n,m} | - φσ ∞σφⁿ°σ n, φε Φ φσ ßεδⁿ°σ m |
┬ε Γ±σ Σ≡≤πΦ⌡ ±δ≤≈α ⌡ ⌠Φπ≤≡φ√σ ±ΩεßΩΦ ±≈Φ≥α■≥± εß√≈φ√∞Φ (≡σπ≤δ ≡φ√∞Φ) ±Φ∞Γεδα∞Φ. ╥αΩΦ∞ εß≡ατε∞ '*' ²ΩΓΦΓαδσφ≥φα {0,} , '+' - {1,} Φ '?' - {0,1}. n Φ m φσ ∞επ≤≥ ß√≥ⁿ ßεδⁿ°σ 65536.
╧ε ≤∞εδ≈αφΦ■ ΣσΘ±≥ΓΦσ ∞σ≥α±Φ∞ΓεδεΓ "µαΣφε" (greedy). ╤εΓ∩αΣσφΦσ ≡α±∩≡ε±≥≡αφ σ≥± ±≥εδⁿΩε ≡ατ, ±ΩεδⁿΩε Γετ∞εµφε, φσ ≤≈Φ≥√Γα ≡στ≤δⁿ≥α≥ ΣσΘ±≥ΓΦ ±δσΣ≤■∙Φ⌡ ∞σ≥α±Φ∞ΓεδεΓ. ┼±δΦ Γ√ ⌡ε≥Φ≥σ "≤∞σφⁿ°Φ≥ⁿ Φ⌡ α∩∩σ≥Φ≥", ≥ε Φ±∩εδⁿτ≤Θ≥σ ±Φ∞Γεδ '?'. ▌≥ε φσ Φτ∞σφ σ≥ τφα≈σφΦσ ∞σ≥α±Φ∞ΓεδεΓ, ∩≡ε±≥ε ≤∞σφⁿ°ασ≥ ≡α±∩≡ε±≥≡αφσφΦσ. ╥αΩΦ∞ εß≡ατε∞:
*? | - ±≥αφσ≥ 0 Φ ßεδσσ |
+? | - 1 Φ ßεδσσ |
?? | - 0 ΦδΦ 1 ≡ατ |
{n}? | - ≥ε≈φε n ≡ατ |
{n,}? | - φσ ∞σφⁿ°σ n ≡ατ |
{n,m}? | - ßεδⁿ°σ ΦδΦ ≡αΓφε n Φ ∞σφⁿ°σ m ≡ατ |
╪αßδεφ√ ≡αßε≥α■≥ ≥αΩ µσ, ΩαΩ Φ ΣΓεΘφ√σ ΩαΓ√≈ΩΦ, ∩ε²≥ε∞≤ Γ φΦ⌡ ∞εµφε Φ±∩εδⁿτεΓα≥ⁿ `\` - ±Φ∞Γεδ√ (ß²Ω±δ²°-±Φ∞Γεδ√):
\t | - ±Φ∞Γεδ ≥αß≤δ ÷ΦΦ |
\n | - φεΓα ±≥≡εΩα |
\r | - ∩σ≡σΓεΣ Ωα≡σ≥ΩΦ |
\α | - ∩σ≡σΓεΣ ⌠ε≡∞α≥α |
\v | - Γσ≡≥ΦΩαδⁿφα ≥αß≤δ ÷Φ |
\a | - τΓεφεΩ |
\e | - escape |
\033 | - Γε±ⁿ∞σ≡Φ≈φα τα∩Φ±ⁿ ±Φ∞Γεδα |
\x1A | - °σ±≥φαΣ÷α≥σ≡Φ≈φα |
\c[ | - control ±Φ∞Γεδ |
\l | - φΦµφΦΘ ≡σπΦ±≥≡ ±δσΣ≤■∙σπε ±Φ∞Γεδα |
\u | - Γσ≡⌡φΦΘ ≡σπΦ±≥≡ -//- |
\L | - Γ±σ ±Φ∞Γεδ√ Γ φΦµφσ∞ ≡σπΦ±≥≡σ Σε \E |
\U | - Γ Γσ≡⌡φσ∞ -//- |
\E | - επ≡αφΦ≈Φ≥σδⁿ ±∞σφ√ ≡σπΦ±≥≡α |
\Q | - ε≥∞σφα ΣσΘ±≥ΓΦ ΩαΩ ∞σ≥α±Φ∞Γεδα |
─ε∩εδφΦ≥σδⁿφε Γ Perl ΣεßαΓδσφ√ ±δσΣ≤■∙Φσ ∞σ≥α±Φ∞Γεδ√:
\w | - αδ⌠αΓΦ≥φε-÷Φ⌠≡εΓεΘ ΦδΦ '_' ±Φ∞Γεδ |
\W | - φσ -//- |
\s | - εΣΦφ ∩≡εßσδ |
\S | - εΣΦφ φσ ∩≡εßσδ |
\d | - εΣφα ÷Φ⌠≡α |
\D | - εΣφα φσ ÷Φ⌠≡α |
╬ß≡α≥Φ≥σ ΓφΦ∞αφΦσ, ≈≥ε Γ±σ ²≥ε "εΣΦφ" ±Φ∞Γεδ. ─δ εßετφα≈σφΦ ∩ε±δσΣεΓα≥σδⁿφε±≥Φ ∩≡Φ∞σφ Θ≥σ ∞εΣΦ⌠ΦΩα≥ε≡√. ╥αΩ:
\w+ | - ±δεΓε |
\d+ | - ÷σδεσ ≈Φ±δε |
[+-]?\d+ | - ÷σδεσ ±ε τφαΩε∞ |
[+-]?\d+\.?\d* | - ≈Φ±δε ± ≥ε≈ΩεΘ |
\b | - π≡αφΦ÷α ±δεΓα |
\B | - φσ π≡αφΦ÷α ±δεΓα |
\A | - φα≈αδε ±≥≡εΩΦ |
\Z | - Ωεφσ÷ ±≥≡εΩΦ |
\G | - Ωεφσ÷ ΣσΘ±≥ΓΦ m//g |
├≡αφΦ÷α ±δεΓα (\b) - ²≥ε ∞φΦ∞α ≥ε≈Ωα ∞σµΣ≤ ±Φ∞Γεδα∞Φ \w Φ \W. ┬φ≤≥≡Φ Ωδα±±α ±Φ∞ΓεδεΓ '\b' εßετφα≈ασ≥ ±Φ∞Γεδ backspace (±≥Φ≡αφΦ ). ╠σ≥α±Φ∞Γεδ√ \A Φ \Z - αφαδεπΦ≈φ√ '^' Φ '$', φε σ±δΦ φα≈αδε ±≥≡εΩΦ '^' Φ Ωεφσ÷ ±≥≡εΩΦ '$' ΣσΘ±≥Γ≤■≥ Σδ ΩαµΣεΘ ±≥≡εΩΦ Γ ∞φεπε±≥≡ε≈φεΘ ±≥≡εΩσ, ≥ε \A Φ \Z εßετφα≈α■≥ φα≈αδε Φ Ωεφσ÷ Γ±σΘ ∞φεπε±≥≡ε≈φεΘ ±≥≡εΩΦ.
┼±δΦ Γφ≤≥≡Φ °αßδεφα ∩≡Φ∞σφ σ≥± π≡≤∩∩Φ≡εΓΩα (Ω≡≤πδ√σ ±ΩεßΩΦ), ≥ε φε∞σ≡ ∩εΣ±≥≡εΩΦ π≡≤∩∩√ εßετφα≈ασ≥± ΩαΩ '\÷Φ⌠≡α'. ╟α∞σ≥ⁿ≥σ, ≈≥ε τα °αßδεφε∞ Γ ∩≡σΣσδα⌡ Γ√≡αµσφΦ ΦδΦ ßδεΩα ²≥Φ π≡≤∩∩√ εßετφα≈α■≥± ΩαΩ '$÷Φ⌠≡α'. ╩≡ε∞σ ²≥επε ±≤∙σ±≥Γ≤■≥ Σε∩εδφΦ≥σδⁿφ√σ ∩σ≡σ∞σφφ√σ:
$+ | - εßετφα≈ασ≥ ∩ε±δσΣφσσ ±εΓ∩αΣσφΦσ |
$& | - Γ±σ ±εΓ∩αΣσφΦσ |
$` | - Γ±σ Σε ±εΓ∩αΣσφΦ |
$' | - Γ±σ ∩ε±δσ ±εΓ∩αΣσφΦ |
╧≡Φ∞σ≡:
$s = "╬ΣΦφ 1 ΣΓα 2 Φ ≥≡Φ 3"; if ($s =~ /(\d+)\D+(\d+)/) { print "$1\n"; # ╨στ≤δⁿ≥α≥ '1' print "$2\n"; # '2' print "$+\n"; # '2' print "$&\n"; # '1 ΣΓα 2' print "$`\n"; # '╬ΣΦφ ' print "$'\n"; # ' Φ ≥≡Φ 3' }
Perl Γσ≡±ΦΦ 5 ±εΣσ≡µΦ≥ Σε∩εδφΦ≥σδⁿφ√σ Ωεφ±≥≡≤Ω÷ΦΦ °αßδεφεΓ:
(?#Ωε∞∞σφ≥α≡ΦΘ) | - Ωε∞∞σφ≥α≡ΦΘ Γ ≥σδσ °αßδεφα. |
(?:°αßδεφ) | - π≡≤∩∩Φ≡εΓΩα ΩαΩ Φ '( )', φε ßστ εß≡α≥φεΘ ±±√δΩΦ |
(?=°αßδεφ) | - "ταπδ Σ√ΓαφΦσ" Γ∩σ≡σΣ. ═α∩≡Φ∞σ≡ /\w+(?=\t)/ ±εε≥Γσ≥±≥Γ≤σ≥ ±δεΓ≤, τα Ωε≥ε≡√∞ ΦΣσ≥ ≥αß≤δ ÷Φ , φε ±Φ∞Γεδ '\t' φσ ΓΩδ■≈ασ≥± Γ ≡στ≤δⁿ≥α≥. |
╧≡Φ∞σ≡:
$s = "1+2-3*4"; if ($s =~ /(\d)(?=-)/) # ═αΘ≥Φ ÷Φ⌠≡≤ τα Ωε≥ε≡εΘ ±≥εΦ≥ '-' { print "$1\n"; # ╨στ≤δⁿ≥α≥ '2' } else { print "ε°ΦßΩα ∩εΦ±Ωα\n";} (?!°αßδεφ) - "ταπδ Σ√ΓαφΦσ" Γ∩σ≡σΣ ∩ε ε≥≡Φ÷αφΦ■.
╧≡Φ∞σ≡:
$s = "1+2-3*4"; if ($s =~ /(\d)(?!\+)/) # ═αΘ≥Φ ÷Φ⌠≡≤ τα Ωε≥ε≡εΘ φσ ±≥εΦ≥ '+' { print "$1\n"; # ╨στ≤δⁿ≥α≥ '2' } else { print "ε°ΦßΩα ∩εΦ±Ωα\n";}
(?ismx)- "Γφ≤≥≡σφφΦσ" ∞εΣΦ⌠ΦΩα≥ε≡√. ╙Σεßφε ∩≡Φ∞σφ ≥ⁿ Γ °αßδεφα⌡, πΣσ φα∩≡Φ∞σ≡ φ≤µφε Γφ≤≥≡Φ °αßδεφα ≤Ωατα≥ⁿ ∞εΣΦ⌠ΦΩα≥ε≡.
╧≡αΓΦδα ≡σπ≤δ ≡φεπε Γ√≡αµσφΦ . (regex)