Notes

My notes about programming and everything related

View on GitHub

Работа со строками

Конкатенация

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

О регулярных выражениях

Регулярное выражение (англ. regular expression, regex, regexp) - это поисковый шаблон (англ. search pattern), который позволяет по заданным в нём правилам найти подстроку (некоторую последовательность символов) в некоторой строке.

Таким образом, основной целью использования регулярного выражения является проверка на соответствие (англ. match) некоторой строки заданному шаблону.

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

Регулярное выражение позволяет задавать в шаблоне

Всё это мы рассмотрим далее на примерах.

Когда регулярные выражения могут быть полезны

Простейшее регулярное выражение

Подобно тому, как строки обычно заключаются в одинарные, двойные или косые ковычки:

'hello'
"hi"
`welcome`

регулярные выражения размещают между двумя косыми чертами / (англ. slash):

/hey/

Это позволяет интерпретатору (компилятору) отличить регулярное выражение от других выражений.

Самим простым поисковым шаблоном является конкретная последовательность символов.

Например, выясним, какие из указанных строк содержат подстроку "ay". Регулярное выражение примет вид /ay/.

'Ray Palmer'.match(/ay/); // ['ay', index: 1] (начинается с 1-ого символа)
'Dorian Gray'.match(/ay/); // ['ay', index: 9] (начинается с 9-ого символа)
'Max Starling'.match(/ay/); // null (соответствий не найдено)

Перечисление допустимых символов

Перечисление символов

Регулярное выражение позволяет перечислить допустимые символы. Для этого используются квадратные скобки [] (англ. square brackets. Читается как “любой символ из символов …“.

Например,

Исключение перечисленных символов

Для исключения из регулярного выражения символов используется символ карет ^ (англ. caret) внутри квадратных скобок. Читается как “любой символ кроме символов из интервала”.

Включение символа из интервала символов

Для включения в регулярное выражение символов из некоторого интервала символов используется символ - (англ. hyphen) внутри квадратных скобок. Читается как “любой символ из интервала …“.

Например,

Исключение символа из интервала символов

Для исключения из регулярного выражения символов из некоторого интервала так же используется символ карет ^ (англ. caret).

Например,

'Greetings user2000'.match(/[^0-9]/) // ['G', index: 0]

'15,000 dollars'.match(/[0-9]/) // ['1', index: 0]
'15,000 dollars'.match(/[^0-9]/) // [',', index: 2]

'GitHub'.match(/[^A-z]/) // null

### Комбинация перечислений символов

Например, регулярное выражение [A-Za-z0-9] удовлетворяет любой букве латинского алфавита или цифре, а регулярное выражение [^A-Za-z0-9] удовлетворяет любому символу, который не является буквой латинского алфавита и числом.

"Hey! How is it going?".match(/[A-Za-z0-9.]/) // ['H', index: 0]
"Hey! How is it going?".match(/[^A-Za-z0-9]/) // ['!', index: 3]

Классы символов

Классы символов (англ. character classes) чем-то напоминают типы данных: они ограничивают область допустимых значений (в данном случае, область допустимых символов).

Семиотика, синтаксис и семантика

Говоря простыми словами, язык программирования - это средство коммуникации между программистом и компьютером. С помощью него программист может “рассказать” компьютеру, что нужно сделать (исполнить, выполнить) последнему.

В любой системе, где используются знаки, выделяют

Рассматривая любую знаковую систему (в том числе и язык программирования), обычно выделяют синтаксис – правила построения сообщений в этой системе, семантику – правила истолкования сообщений тем, кому они адресованы, а также прагматику, сопоставляющую сообщения желаниям того, от кого они исходят.