Так что теперь у вас есть ощущение того, как регулярные выражения работают, вот операторы, которые вы найдете полезными, и что они делают:
Regular Expression Operators
a? | соответствует 0 или 1 вхождения *a* | 'a' или пустая строка |
---|---|---|
a* | соответствует 0 или более вхождения *a* | пустая строка или 'a', 'aa', 'aaa' и т. д. |
a+ | соответствует 1 или более вхождения *a* | 'a', 'aa', 'aaa' и т.д. |
a|b | соответствует *a* или *b* | 'a' или 'b' - |
. | соответствует любому единичному символу | 'a', 'q', 'l', '_', '+' и т.д. |
[woeirjsd] | соответствует любому из названных симовлов | 'w', 'o', 'e', 'i', 'r', 'j', 's', 'd' |
[1-9] | соответствует любому из симовлов в диапазоне | '1', '2', '3', '4', '5', '6', '7', '8', '9' |
[^13579] | соответствует любым не названным символам | даже цифры или любой другой символ |
(ie) | группа выражений (для использования с другими операторами) | 'ie' |
^a | соответствует *a* в начале строки | 'a' |
a$ | соответствует *a* в конце строки | 'a' |
Есть несколько других вещей, которые Вы должны знать. Если вы хотите использовать один из операторов выше, означает фактический символ, как и вы хотите соответствовать вопросительному знаку, вы должны поставить '\' перед ним. Например:
// evaluates to true, and will for anything ending in a question mark
// (that doesn't have a question mark in it)
"How tall is Angelina Jolie?" ==~ /[^\?]+\?/
Это ваше первое действительное регулярное выражение. (Частое использование их в PERL является из причин по которым его рассматривают языком "write only"). Кстати, google знает [she is|http://www.google.com/search?hl=en&q=how+tall+is+angelin...]. Единственный способ понять выражения состоит в том, чтобы выбрать его обособленно:
/ | [^?] | + | ? | / |
---|---|---|---|---|
начинает выражение | любой символ кроме '?' | более чем один символ | вопросительный знак | конец выражения |
Так что использование \ перед ? заставляет его обратиться к фактическому вопросительному знаку.