Регулярные выражения (regex or regexp) чрезвычайно полезны при извлечении информации из любого текста путем поиска одного или нескольких совпадений на освнове шаблона поиска (то есть определенной последовательности символов ASCII или Unicode).

Области применения регулярных выражений варьируются от проверки до синтаксического анализа / замены строк, передачи данных в другие форматы.

Одна из наиболее интересных особенностей заключается в том, что после того, как вы изучили синтаксис, вы можете с учетом небольших отличий использовать этот инструмент практически для всех языков программирования (JavaScript, Java, VB, C #, C / C ++, Python, Perl, Ruby , Delphi, R, Tcl и многие другие) .

Основы синтаксиса регулярных выражений

Анкеры: ^ и $

	^The        соответствие любой строке, начинающейся с  "The"
	
	end$        соответствие любой строке, заказчивающейся на "end"
	
	^The end$   точное соответствие любой строке, начинающейся на
				 "The" и заканчивающейся на "end"
				 
	abcd        соответствие любой строке, в которой есть 
				последовательность  "abcd"

Квантификаторы: * + ? и {}

	abc*        соответствие строке в которой есть символы "ab" за которыми 
				следует ноль или более одного символа "с"
				 
	abc+        соответствие строке в которой есть символы "ab" за которыми
				следует один или более символов "с"
	
	abc?        соответствие строке в которой есть символы "ab" за которыми 
				следует один или более символов "с"
				 
	abc{2}      соответствие строке в которой есть символы "ab" за которыми 
				следуют два символа "с"
				
	abc{2,}     соответствие строке в которой есть символы "ab" за которыми 
				следуют два символа или более "с"
				
	abc{2,5}    соответствие строке в которой есть символы "ab" за которыми 
				следуют от двух до пяти символов "с"
				
	a(bc)*      соответствие строке в которой есть символ "a" за которым 
			следуют ноль или более одной последовательности символов "bc"
				
	a(bc){2,5}  соответствие строке в которой есть символ "a" за которым 
			следуют от двух до пяти последовательностей символов "bc"

Оператор ИЛИ: | или [ ]

	a(b|c)     соответствие строке в которой есть символ "a" за которым 
				следуют символы "b" или "c" 
	a[bc]      то же самое

Операторы символов: \d \w \s и .

	\d         соответствие цифровому символу
	
	\w         соответствие буквенному символу, а также символу нижнего 
				подчеркивания
	
	\s         соответствие символу пробела, а также табуляции и переносу 
				строки

	.          соответствие любому символу 

Использовать оператор . следует избирательно, так как очень часто использование оператора исключения $ более соотвтетствет поставленным задачам.

\d, \w и \s также могут иметь свои обратные совпадения: \D, \W and \S соответственно.

Например, оператор \D будет соответствовать обратному совпадению относительно полученного с помощью оператора \d.

	\D         соответствие одному нецифровому символу
Чтобы получать точные соответствия, следует избегать символов ^. [$ () * +? , поскольку они имеют особое значение. Для того, чтобы находить соответствия таким символам следет их экранировать с помощью символа обратного слэша \.
	\$\d        совпадение со строкой, которая имеет символ "$" 
				перед символом цифры, например "$100"

Флаги

Мы рассказали о том как конструировать регулярные выражения, но забыли рассказать об одной фундаментальной концепции: флагах.

Регулярное выражение обычно встречается в таком виде / abc /, где шаблон поиска разделяется двумя символами косой черты /. В конце мы можем указать флаг со следующми значениями (их также можно комбинировать друг с другом):

  • g (global) не возвращается после первого совпадения, перезапуская последующие запросы с конца предыдущего совпадения
  • m (multi line) сопоставление по нескольким строкам; символы начала и конца (^ и $) начинают работать по нескольким строкам (то есть, происходит сопоставление с началом или концом каждой строки (строки разделяются символами \n или \r), а не только с началом или концом всей вводимой строки)
  • i (insensitive) игнорирование регистра при сопоставлении (например /aBc/ будет соответствовать AbC).

Практически потренироваться с составлением регулярных выражений можно в онлайн редакторе.

Источник