Введение в регулярные выражения
Регулярные выражения довольно распространены в компьютерном программировании. Но они также доступны и для конечных пользователей. Например, если вы имеете дело с PowerShell или командой Findstr, вы можете их использовать. И есть сторонние утилиты (такие как Agent Ransack и EditPad), которые поддерживают регулярные выражения. Поскольку они очень полезны во многих различных средах, я решил, что уместно рассказать о них.
Регулярное выражение — это строка, часто состоящая из специальных символов, которая предназначена для соответствия шаблону поиска. Например, если мы используем команду Findstr, мы можем искать слово «документ»
сразу за которым следует запятая или точка, указав строку поиска «документ [,.]». Специальными символами в данном случае являются квадратные скобки, что означает, что любой из заключенных в них символов должен следовать за словом «документ».
В регулярном выражении можно использовать множество специальных символов. Многие из них перечислены ниже:
Character |
Description |
|
Match 0 or more characters. Example: haven matches both heaven and haven. |
||
+ |
Match 1 or more characters. Example: he+aven matches heaven and heeaven but not haven. |
|
^ |
Match what follows only if it’s at the beginning of the string. Example: if your regular expression is ^document, it will match document in the string «document the requirements», but it will not match anything in the string «this is a requirements document». |
|
$ |
Match what precedes only if it’s at the end of the string. Example: if your regular expression is document$, it will match document in the string «this is a requirements document», but it will not match anything in the string «document the requirements». |
|
\d |
Match a digit. Example: \d matches each digit individually in the string «my degree is from 1987». If you want to match all four digits at once, just repeat the \d like \d\d\d\d. |
|
. |
Match any single character. The period is like a wildcard in that it will match anything. |
|
(a |
b) |
Чтобы увидеть регулярные выражения в действии, давайте объединим некоторые из них и воспользуемся командой Findstr для поиска вхождений строк в файле. У меня есть файл Barry.tmp, содержащий следующий текст:
Video provides a powerful way to help you prove your point. When you click Online Video, you can paste in the embed code for the 20 or 30 videos you want to add. You can also type a keyword to search online for the video that best fits your document.
Давайте воспользуемся Findstr для поиска цепочек цифр в файле: (См. Рисунок 1.)
Рисунок 1. Поиск цепочек цифр.
Позвольте мне представить еще несколько концепций. Вы можете использовать пару квадратных скобок, чтобы ограничить диапазон символов, которые нужно найти. Например, указание _ [a-z] _ будет соответствовать любому буквенному символу. Также следует отметить, что вы используете символ обратной косой черты (\), чтобы «экранировать» следующий за ним символ и трактовать его буквально. Это полезно, если вы хотите найти символ, который иначе рассматривался бы как часть регулярного выражения. Вооружившись этими двумя частями информации, мы можем теперь искать в нашем файле алфавитный символ, за которым следует точка, т.е. находить строки, являющиеся концами предложений: (см. Рисунок 2)
Рисунок 2. Поиск концов предложений.
Позвольте мне в заключение предупредить: по моему опыту обработчик регулярных выражений, используемый в командной строке Windows, немного отличается от большинства обработчиков регулярных выражений. Регулярные выражения, которые должны работать (и которые работают в других утилитах), могут не работать должным образом в командной строке. Поэтому, зная, что ваш пробег может отличаться, поэкспериментируйте с ними, но не ставьте свою следующую зарплату на то, что введенная вами сумма будет работать должным образом.
Этот совет (1364) применим к Windows 7, 8 и 10.