Блог


TextPipe Регулярные выражения Теория

Прочитано 786 раз Последнее изменение 31.07.2015 10:04, Пятница

Ну вот мы и добрались до регулярных выражений. По теме регулярных выражений вышло несколько книг на русском языке и теорию можно почерпнуть оттуда. Важно понимать то обстоятельство, что несмотря на некий общий набор правил конкретные реализации регулярных выражений могут отличаться. Имеется в виду, что встроенную поддержку регулярных выражений имеют разные языки. Среди них ActionScript, Perl, Java[1],PHP, JavaScript, языки платформы .NET Framework[2], Python, Tcl, Ruby, Lua, Gambas, C (стандарт 2011 года), Delphi, D и другие. Т.е. существуют общие правила и существуют некие особенности трактовки в конкретном языке. Но общего все же больше.

Синтаксис

Представление Эквивалент Значение
\d  [0-9]   Цифра
\D [^\d] Любой символ, кроме цифры 
\w   [A-Za-zА-Яа-я0-9]    Символы, образующие «слово» (буквы, цифры) 
\W  [^\w]  Символы, не образующие «слово»
\s [ \t\v\r\n\f]  Пробельный символ
\S  [^\s]  Не пробельный символ
.   Соответствует любому единичному символу
( ... )   Оператор группы
     

\d обозначает любую цифру от 0 до 9; \d\d\d - три любых цифры

a-z обозначает любую букву латинского алфавита в нижнем регистре, A-Z тоже самое но в верхнем регистре

Буквы можно объединить например так a-zA-Z что означает любая буква латинского алфавита, для русского алфавита любая буква обозначается а-яА-Я  Конструкция a-zA-Zа-яА-Я0-9.,:; означает все буквы и цифры, а также перечисленные знаки препинания

Кроме букв есть обозначения для других сивмолов. \s означает один пробел

^ Символ отрицания меняющий смысл на противоположный  

Специальные символы  
 

\xnn  символ с шестнадцатеричным кодом nn 
\x{nnnn} символ с шестнадцатеричным кодом nnnn (более одного байта можно задавать только в режиме Unicode) 
\t табуляция (HT/TAB), можно также \x09 
\n новая строка (NL), можно также \x0a 
\r возврат каретки (CR), можно также \x0d
\f  перевод формата (FF), можно также \x0c 
\a звонок (BEL), можно также \x07
 \e  escape (ESC), можно также \x1b

 
Перечисление и группировка

Вертикальная черта разделяет допустимые варианты. Например, «gray|grey» соответствует gray или grey. Круглые скобки используются для определения области действия и приоритета операторов. Например, «gray|grey» и «gr(a|e)y» являются разными образцами, но они оба описывают множество, содержащее gray и grey.

Квантификация

Квантификатор после символа или группы определяет, сколько раз предшествующее выражение может встречаться. 

{m,n} общее выражение, повторений может быть от m до n включительно 
{m,} общее выражение, m и более повторений 
{,n} общее выражение, не более n повторений
? Знак вопроса означает 0 или 1 раз, то же самое, что и {0,1}. Например, «colou?r» соответствует и color, и colour 
* Звёздочка означает 0, 1 или любое число раз ({0,}). Например, «go*gle» соответствует ggle, gogle, google и др.
Плюс означает хотя бы 1 раз ({1,}). Например, «go gle» соответствует gogle, google и т. д. (но не ggle)

Таким образом \d означает любые цифры; .\d любой символ с цифрой.

При поиске в TextPipe для отделения специальных символов от просто символов используется обратный слэш \.

Например, если . это любой символ, то \. обозначает просто точку. \/ обозначает прямой слэш. Для обозначения самого обратного слэша используют двойной обратный слэш \\.

Здесь я описал общие правила и наверняка что -то упустил. За полным описанием рекомендую обратиться к литературе по регулярным выражениям или, что правильнее, к документации программы. 

Оставить комментарий

Календарь

« Октябрь 2017 »
Пн Вт Ср Чт Пт Сб Вс
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31