Π Π°Π½Π΅Π΅ Π² ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ /i, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΠΈΡΠΊ Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°Π³Π»Π°Π²Π½ΡΠΌΠΈ ΠΈ ΡΡΡΠΎΡΠ½ΡΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ. ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ:
[x]. /g - ΠΈΡΠΊΠ°ΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ Π²ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΎΠ±ΡΠ°Π·ΡΡ (Global);
[x]. /i - ΠΈΡΠΊΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·ΡΡ Π±Π΅Π· ΡΡΠ΅ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ° Π±ΡΠΊΠ² (case-Insensitive);
[x]. /s - ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ (Single-line);
[x]. /m - ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΠΉ (Multi-line) Ρ ΡΡΠ΅ΡΠΎΠΌ \n ;
[x]. /o - ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (Once);
[x]. /x - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (eXtended).
ΠΠ· Π²ΡΠ΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ², ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΡΠ°ΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ - ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΌ Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° Π²ΠΈΠ΄Π΅ ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ! Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈ ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ Π»Π΅ΠΊΡΠΈΠΈ:
m/ # Π½Π°ΡΠ°Π»ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ <A # Π½Π°ΡΠ°Π»ΠΎ ΡΠ΅Π³Π°: <A [^>]+? # Π΄Π°Π»Π΅Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»ΡΠ±ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΠΊΡΠΎΠΌΠ΅ > HREF # ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΠΈ \s*=\s* # Π·Π½Π°ΠΊ =, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ ["']? # ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠ°Ρ ΠΊΠ°Π²ΡΡΠΊΠ° ΠΈΠ»ΠΈ Π°ΠΏΠΎΡΡΡΠΎΡ ( # Π½Π°ΡΠ°Π»ΠΎ Π·Π°Ρ Π²Π°ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ [^'" >]+? # Π°Π΄ΡΠ΅Ρ ΡΡΡΠ»ΠΊΠΈ: Π²ΡΠ΅, ΠΊΡΠΎΠΌΠ΅ ',",ΠΏΡΠΎΠ±Π΅Π»Π° ΠΈ > ) # ΠΊΠΎΠ½Π΅Ρ Π·Π°Ρ Π²Π°ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ['"]? # ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ°Ρ ΠΊΠ°Π²ΡΡΠΊΠ° ΠΈΠ»ΠΈ Π°ΠΏΠΎΡΡΡΠΎΡ \s* # Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ > # ΠΊΠΎΠ½Π΅Ρ ΡΠ΅Π³Π° /igx; # ΠΊΠΎΠ½Π΅Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ # ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: <a id='ru' href="index.html">
ΠΠ°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² ΡΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅, ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. Π ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ, ΡΠΎ ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π΅ Π²Π»ΠΈΡΡΡ Π½Π° Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠΎΠΌΠ΅ ΠΏΠΎΠΈΡΠΊΠ°, ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ Π½Π° Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°ΠΌΠ΅Π½Ρ (substitution), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΡΠ°Π΅ΡΡΡ Π½Π°ΠΉΡΠΈ Π² ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·ΡΡ, Π° Π΅ΡΠ»ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡ, ΡΠΎ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°ΠΌΠ΅Π½Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
$variable =~ s/ΠΎΠ±ΡΠ°Π·Π΅Ρ/Π·Π°ΠΌΠ΅Π½Π°/; # Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $variable ΠΎΡΡΡΠΊΠΈΠ²Π°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠ° 'ΠΎΠ±ΡΠ°Π·Π΅Ρ', # ΠΈ Π΅ΡΠ»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π°, ΡΠΎ ΠΎΠ½Π° Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° 'Π·Π°ΠΌΠ΅Π½Π°'
ΠΡΠ΅, ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Π΄Π»Ρ Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΌΠ΅Π½Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠ΅Π²Π°Ρ ΠΈ ΠΏΡΠ°Π²Π°Ρ ΡΠ°ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΌΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΠΈΡΡΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΠΌ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
$pattern = 'ΡΠΈΠ»ΠΎ'; # ΠΎΠ±ΡΠ°Π·Π΅Ρ $replacement = 'ΠΌΡΠ»ΠΎ'; # Π·Π°ΠΌΠ΅Π½Π° $text =~ s/$pattern/$replacement/; # ΠΏΠΎΠΌΠ΅Π½ΡΡΡ 'ΡΠΈΠ»ΠΎ' Π½Π° 'ΠΌΡΠ»ΠΎ'
Π ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΌΠ΅Π½Ρ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π²Π° ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΡΠ»ΠΎΠ²Π° Π² ΡΡΠΎΠΉΠΊΠ΅ ΡΠ»ΠΎΠ², ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ:
$text = 'ΠΌΠ°ΡΡ Π»ΡΠ±ΠΈΡ Π΄ΠΎΡΡ'; $text =~ s/(\S+)\s+(\S+)\s+(\S+)/\3 \2 \1/; # Π² $text Π±ΡΠ΄Π΅Ρ 'Π΄ΠΎΡΡ Π»ΡΠ±ΠΈΡ ΠΌΠ°ΡΡ'
ΠΠ»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΌΠ΅Π½Ρ s/// ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π²ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ m//. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ /g ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π²ΡΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ Π² ΡΠ΅ΠΊΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
$our_computers =~ s/Windows/Linux/g;
Π£ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ /e (expression evaluation), ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡΡΠ°Ρ ΡΠ°ΡΡΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΈ ΡΡΠΎΠΌ Π² Π·Π°ΠΌΠ΅Π½ΡΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π·Π°Ρ Π²Π°ΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ "ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ" Π·Π°ΠΌΠ΅Π½Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΉ. Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΈΠ· ΡΠΊΠ°Π»Ρ Π¦Π΅Π»ΡΡΠΈΡ Π² ΡΠΊΠ°Π»Ρ Π€Π°ΡΠ΅Π½Π³Π΅ΠΉΡΠ°:
$text = 'ΠΡΠΌΠ°Π³Π° Π²ΠΎΡΠΏΠ»Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ 233C.'; $text =~ s/(\d+\.?\d*)C\b/int($1*1.8+32).'F'/e; # Π² $text Π±ΡΠ΄Π΅Ρ: 'ΠΡΠΌΠ°Π³Π° Π²ΠΎΡΠΏΠ»Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ 451F.'
Π Π΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΡ . Π ΡΡΠ½ΠΊΡΠΈΠΈ split() ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ»ΡΠΆΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΠ°ΡΡΠΈ. Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΡ ΡΡΡΠΎΠΊΡ Π½Π° ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ ΠΏΠΎ Π»ΡΠ±ΠΎΠΌΡ ΠΈΠ· ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²:
@substrings = split /\s+/, $text; # ΡΠ°Π·Π±ΠΈΡΡ Π½Π° ΡΠ°ΡΡΠΈ
Π Π΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡΡ , ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π½ΡΠΆΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ grep() Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ°Π·ΡΡ:
@result = grep /$pattern/, @source; # ΠΎΡΠΎΠ±ΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ map ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°ΠΌΠ΅Π½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
@hrefs = ('http://regex.info', 'http://regexp.ru'); map s{http://}{}, @hrefs; # ΡΠ±ΡΠ°ΡΡ 'http://' ΠΈΠ· ΡΡΡΠ»ΠΎΠΊ
Π Π΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½ΠΎΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅: Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΠΏΡΠΎΡΡΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊ ΠΎΠ½ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΌΡΡΠ»ΠΈΡΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ°Π±Π»ΠΎΠ½Π°ΠΌΠΈ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π΅ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠ΅ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ. Π ΡΠ°Π±Π»ΠΈΡΠ΅ 8.1 Π΄Π»Ρ ΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² Perl. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ΅ΡΠΏΠ½ΡΡΡ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Perl ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΠΆΠ΅ΡΡΡΠΈ Π€ΡΠΈΠ΄Π»Π° "Π Π΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ".
Π’Π°Π±Π»ΠΈΡΠ° 8.1. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉΠΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΡΠΈΠΌΠ΅ΡΡ//ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅Π»ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ/$pattern/\ΠΎΡΠΌΠ΅Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°m{C:\\windows}()Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΈΠ»ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ/(\w\w\w)+/|Π²ΡΠ±ΠΎΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²/ΠΊΠΎΡΠ΅Π»Π΅ΠΊ|ΠΆΠΈΠ·Π½Ρ/[]ΠΊΠ»Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ /[0-9a-fA-F]/[^]ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΠΊΡΠΎΠΌΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ /[^0-9]/ ΠΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ»Ρ .Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΠΊΡΠΎΠΌΠ΅ \n (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΡΠ±ΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π²ΠΊΠ»ΡΡΠ°Ρ \n Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ /s)/(.+)/\dΠ΄Π΅ΡΡΡΠΈΡΠ½Π°Ρ ΡΠΈΡΡΠ°m{ΠΡΠ΅ΠΌΡ=\d+ ΡΠ΅ΠΊ}\DΠ½Π΅ Π΄Π΅ΡΡΡΠΈΡΠ½Π°Ρ ΡΠΈΡΡΠ°/(\D*)\d+/\wΠ°Π»ΡΠ°Π²ΠΈΡΠ½ΠΎ-ΡΠΈΡΡΠΎΠ²ΠΎΠΉ Π·Π½Π°ΠΊ/\s+\w+\s+/\WΠ½Π΅ Π°Π»ΡΠ°Π²ΠΈΡΠ½ΠΎ-ΡΠΈΡΡΠΎΠ²ΠΎΠΉ Π·Π½Π°ΠΊ/\W\W\W/\sΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ»s/\s+/ /\SΠ»ΡΠ±ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΠΊΡΠΎΠΌΠ΅ ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΠΎΠ³ΠΎ/\S+/ Π£ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ^Π½Π°ΡΠ°Π»ΠΎ ΡΡΡΠΎΠΊΠΈ (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½Π°ΡΠ°Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ /m)/^\w+/$ΠΊΠΎΠ½Π΅Ρ ΡΡΡΠΎΠΊΠΈ (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ /m)/\d+$/\bΠ³ΡΠ°Π½ΠΈΡΠ° ΡΠ»ΠΎΠ²Π° (ΠΌΠ΅ΠΆΠ΄Ρ \w ΠΈ \W ΠΈΠ»ΠΈ \W ΠΈ \w)/stop\b/\BΠ»ΡΠ±Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ, ΠΊΡΠΎΠΌΠ΅ Π³ΡΠ°Π½ΠΈΡΡ ΡΠ»ΠΎΠ²Π°/stop\B/\AΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ°Π»ΠΎ ΡΡΡΠΎΠΊΠΈ, Π΄Π°ΠΆΠ΅ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ /m/\A[#]/\zΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½Π΅Ρ ΡΡΡΠΎΠΊΠΈ, Π΄Π°ΠΆΠ΅ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ /m/\w+\z/\ZΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½Π΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ \n Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, Π΄Π°ΠΆΠ΅ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ /m/\w+\Z/\GΠΏΠΎΠ·ΠΈΡΠΈΡ Π² ΡΡΡΠΎΠΊΠ΅, ΡΠ°Π²Π½Π°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ pos() Escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ \t \n \r \f \a \bΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ: \b Π² ΠΊΠ»Π°ΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²ΡΡΡΡΠΏΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΠΈΠΌΠ²ΠΎΠ» Backspace (0x08), Π²Π½Π΅ Π΅Π³ΠΎ - ΠΊΠ°ΠΊ Π³ΡΠ°Π½ΠΈΡΠ° ΡΠ»ΠΎΠ²Π°/[\a\b\f\r\n\t]/\0 \x \c \NΠΊΠΎΠ΄Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²/\033\x1F\cZ/ /\x{263a}/\l \L \u \U \Q \EΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ/\Q$pattern\E/ ΠΠ²Π°Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ * *?Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ 0 (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ²Π°Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ)/\s*/ /\S*?/+ +?ΠΎΠ΄Π½ΠΎ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ²Π°Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ)/\d+/ /\D+?/? ??Π½ΠΎΠ»Ρ ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠ΅ (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ²Π°Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ)/.?/ /[.a-z]??/{n} {n}?ΡΠΎΠ²Π½ΠΎ n ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ²Π°Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ)/\w{8}/ /\w{5}?/{n,} {n,}?n ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ²Π°Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ)/\d{2,}/ /\d{5,}?/{n,m} {n,m}?ΠΎΡ n Π΄ΠΎ m ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ²Π°Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ)/[A-Z]{1,12}/ /[a-z]{0,3}?/