Perl практика

         

Множители.


* - ни одного или более экземпляров стоящего непосредственно перед ней символа.

+ - один или более экземпляров стоящего непосредственно перед нем символа.

? - ни одного или один экземпляр стоящего непосредственно перед ним символа.

Например, регулярное выражение /fo+ba?r/ обозначает символ f, за которым следует один или более символов o, затем символ b, затем ни одного или один символ a

и символ r.

$_ = "mike xxxxxxxxxxxxx nick" s/x+/igor/;

В последнем примере все символы x будут заменемы на igor (описанные выше образцы характеризуются
&quot прожорливостью &quot). Простой способ избежать этого - применение общего множителя.

/x{5,10}/ - найти символ, стоящий перед скобками, повторяющийся от пяти до десяти раз.

/x{5,}/ - найти символ, стоящий перед скобками, повторяющийся от пяти раз.

/x{5}/ - найти символ, стоящий перед скобками, повторяющийся ровно пять раз.

/x{,5}/ - найти символ, стоящий перед скобками, пять раз или менее.

/a.{5}b/ - соответствует букве a, отделенной от буквы b любыми пятью символами.

Если в одном выражении используются два множителя, то правило &quot прожорливости&quot дополняется правилом "чем левее, тем прожорливее &quot. Например:

$_ = "a xxx c xxxxxxxx c xxx d"; /a.*c.*d/;

Первая комбинация &quot.*&quot соответствует всем символам до второй буквы c.

Можно заставить любой множитель перестать быть "прожорливым", поставив после него вопросительный знак:

$_ = "a xxx c xxxxxxxx c xxx d"; /a.*?c.*d/;

Теперь a.*?c соответствует манимальному числу символов между a и c, а не максимальному.



Содержание раздела