Разница между 1.23 и текущей версией РегулярныеВыражения.
@@ -1,8 +1,8 @@
-- Регулярные выражения
+= Регулярные выражения
 
 Практические регулярные выражения появились в ранних версиях Unix и использовались в редакторе ''ed''. Обычно регулярные выражения ассоциируются с утилитой ''grep'' (Global search for Regular Expressions and Print lines).
 
--- Зачем они нужны?
+- Зачем они нужны?
 
 ОболочкаShell практически не имеет никаких встроенных средств обработки текста,
 кроме самых примитивных;
@@ -10,7 +10,7 @@
 Регулярные выражения (regular expressions) — мощный и эффективный инструмент обработки текста,
 совместно с возможностями оболочки позволяет конструировать простые и компактные инструменты.
 
--- Где используются
+- Где используются
 
 Регулярные выражения используются в таких программах,
 как ''sed'' (ЯзыкSed, потоковый редактор),
@@ -24,7 +24,7 @@
 ERE (extended regular expressions — расширенные регулярные выражения).
 Синтаксис BRE поддерживается большинством утилит Unix.
 
--- Шаблоны на основе регулярных выражений
+- Шаблоны на основе регулярных выражений
 
 Для демонстрации примеров регулярных выражений будет использоваться утилита ''grep''.
 Это удобный способ интерактивной отладки и проверки регулярных выражений.
@@ -46,19 +46,19 @@
  OK
  $
 
---- Привязка выражений к началу и концу строки
+-- Привязка выражений к началу и концу строки
 
 Регулярное выражение дает совпадение со строкой в том случае,
 если искомый образец содержится в любом месте строки.
 Символы «ˆ» и «$»,
 используемые для привязки совпадения к началу и концу строки,
-называют «якорями».
-Например, регулярное выражение `apple` совпадает со строкой `myapples`,
-но `ˆapple$` даст совпадение только со строкой `apple`.
-В то же время регулярное выражение `ˆapple` даст совпадение с `applesaregood`,
-а `apple$` совпадёт со строкой `redapple`.
+называют ''якорями''.
+Например, регулярное выражение ``apple`` совпадает со строкой ``myapples``,
+но ``ˆapple$`` даст совпадение только со строкой ``apple``.
+В то же время регулярное выражение ``ˆapple`` даст совпадение с ``applesaregood``,
+а ``apple$`` совпадёт со строкой ``redapple``.
 
- $ ''' echo myapples | grep 'apple' '''
+ $ '''echo myapples | grep 'apple' '''
  myapples
  $ '''echo apple | grep '^apple$' '''
  apple
@@ -70,12 +70,12 @@
  $
 
 В регулярных выражениях символ «ˆ» имеет два значения.
-Встретившись в самом начале выражения он работает как «якорь»,
+Встретившись в самом начале выражения он работает как якорь,
 привязывая образец к началу строки;
-выражение `ˆ[a-z]` совпадает с любой строкой,
+выражение ``ˆ[a-z]`` совпадает с любой строкой,
 начинающейся со строчной буквы латинского алфавита.
 Следуя после открывающей квадратной скобки ([) символ «ˆ» инвертирует группу символов;
-выражение `[ˆa-z]` совпадает с любой строкой,
+выражение ``[ˆa-z]`` совпадает с любой строкой,
 не содержащей строчных букв латинского алфавита.
 
  $ '''echo aqua | grep '[a-z]' '''
@@ -88,12 +88,12 @@
  $ '''echo '9qua' | grep '^[a-z]' '''
  $
 
---- Оператор «*», атомы и подвыражения
+-- Оператор «*», атомы и подвыражения
 
 В регулярных выражениях
 в отличие от шаблонов оболочки оператор «*» не даёт совпадения сам по себе,
 а изменяет поведение предыдущего символа.
-Регулярное выражение `cat*` даст совпадение со строками `ca`, `cat` и `catxyz`.
+Регулярное выражение ``cat*`` даст совпадение со строками ``ca``, ``cat`` и ``catxyz``.
 
  $ '''echo ca | grep 'cat*' '''
  ca
@@ -113,9 +113,9 @@
 а на элементарную конструкцию называемую ''атомом'' (''atom'').
 Любой одиночный символ является атомом.
 Атом можно получить из любого выражения, заключив его в \(…\).
-Например, регулярное выражение `ma\(ma\)*` совпадает со строками `ma`,
-`mama`, `mamama`,
-но не совпадает с `mam`.
+Например, регулярное выражение ``ma\(ma\)*`` совпадает со строками ``ma``,
+``mama``, ``mamama``,
+но не совпадает с ``mam``.
 
  $ '''echo 'ma' | grep 'ma\(ma\)*' '''
  ma
@@ -131,14 +131,14 @@
 называется ''подвыражением'' (''subexpression'').
 Подвыражения могут быть вложенными на любую глубину.
 
---- Обратные ссылки
+-- Обратные ссылки
 
 В регулярном выражении может присутствовать ''обратная ссылка'' (''back-reference'') на строку
 (возможно, пустую) совпавшую с подвыражением.
 Такую ссылку вставляют на порядковый номер подвыражения (от 1 до 9).
-Нумерация подвыражений начинается с единицы (`\1`, `\2` и т. д.),
-а подсчёт ведётся по открывающей `\(`.
-Например, регулярное выражение `\([0-9]\)\1` совпадёт со строками `00`, `33` и т. д. —
+Нумерация подвыражений начинается с единицы (``\1``, ``\2`` и т. д.),
+а подсчёт ведётся по открывающей ``\(``.
+Например, регулярное выражение ``\([0-9]\)\1`` совпадёт со строками ``00``, ``33`` и т. д. —
 с любой строкой, содержащей две одинаковых цифры.
 
  $ '''echo 00 | grep '\([0-9]\)\1' '''
@@ -149,8 +149,8 @@
  $
 
 На вложенные подвыражения тоже можно ссылаться.
-Так регулярное выражение `\([0-9]\([a-z]\)\)\1\2` совпадает со строками `0a0aa`, `1b1bb`,
-но со строкой `1a0aa` совпадения уже нет.
+Так регулярное выражение ``\([0-9]\([a-z]\)\)\1\2`` совпадает со строками ``0a0aa``, ``1b1bb``,
+но со строкой ``1a0aa`` совпадения уже нет.
 
  $ '''echo 0a0aa | grep '\([0-9]\([a-z]\)\)\1\2' '''
  0a0aa
@@ -165,25 +165,38 @@
 \{''x'',\} — минимум ''x'' совпадений и \{''x'',''y''\} — от ''x'' совпадений до ''y'' совпадений
 включительно), где 0 ≤ ''x'' ≤ ''y''.
 
--- Расширенные регулярные выражения (ERE)
+Например, примитивную проверку IP-адреса можно осуществить следующим образом:
 
-Расширенные регулярные выражения обычно ассоциируются с ''egrep'' (или `grep -E`).
+ $ '''echo 192.255.255.255 | grep '^\([0-9]\{3\}\.\)\{3\}[0-9]\{3\}$' '''
+ 192.255.255.255
+ $ '''echo 1.2.3 | grep '^\([0-9]\{3\}\.\)\{3\}[0-9]\{3\}$' '''
+ $
+
+- Расширенные регулярные выражения (ERE)
+
+Расширенные регулярные выражения обычно ассоциируются с ''egrep'' (или ``grep -E``).
 В отличие от базовых регулярных выражений,
 в ERE для группировки и в операторах повтора не используются обратные слэши,
 по этой причине они читаются и записываются проще.
+Например, предыдущий пример с проверкой IP-адреса записывается в ERE так:
+
+ $ '''echo 192.255.255.255 | grep -E '^([0-9]{3}\.){3}[0-9]{3}$' '''
+ 192.255.255.255
+ $
+
 Ещё одним отличием от BRE является наличие оператора «ИЛИ» (читается как «OR»).
 
-Регулярное выражение `orange|apple` совпадает и со строкой `apple` и со строкой `orange`.
+Регулярное выражение ``orange|apple`` совпадает и со строкой ``apple`` и со строкой ``orange``.
 
- $ echo apple | grep -E 'orange|apple'
+ $ '''echo apple | grep -E 'orange|apple' '''
  apple
- $ echo orange | grep -E 'orange|apple'
+ $ '''echo orange | grep -E 'orange|apple' '''
  orange
  $
 
 Оператор «|» имеет низкий приоритет,
-поэтому регулярное выражение `a|bc` совпадает с `a` или
-`bc`, но не с `ac` и `bc`.
+поэтому регулярное выражение ``a|bc`` совпадает с ``a`` или
+``bc``, но не с ``ac`` и ``bc``.
 
  $ '''echo a | grep -E 'a|bc' '''
  a
@@ -193,7 +206,7 @@
  $ '''echo bc | grep -E 'a|bc' '''
  $
 
-Чтобы получить совпадение с `ac` и `bc` нужно поставить скобки: `(a|b)c`.
+Чтобы получить совпадение с ``ac`` и ``bc`` нужно поставить скобки: ``(a|b)c``.
 
  $ '''echo ac | grep -E '(a|b)c' '''
  ac
@@ -209,40 +222,39 @@
 Для удобства в ERE добавлены ещё два оператора повторения «?» и «+».
 Оператор «?» равнозначен {0,1}, а оператор «+» равнозначен {1,}.
 Заметим,
-что многие реализации BRE тоже «понимают» `\+`, `\?` и оператор `\|`.
+что многие реализации BRE тоже «понимают» ``\+``, ``\?`` и оператор ``\|``.
 
--- Краткое руководство
+- Краткое руководство
 
-Любой неспециальный символ c совпадает сам с собой.
+	''c'' : Любой неспециальный символ ''c'' совпадает сам с собой.
 
-\c Отменить действие специального символа c.
+	\''c'' : Отменить действие специального символа ''c''.
 
-ˆ Привязать выражение к началу строки.
+	ˆ : Привязать выражение к началу строки.
 
-$ Привязать выражение к концу строки.
+	$ : Привязать выражение к концу строки.
 
-. Совпадает с любым одиночным символом.
+	. : Совпадает с любым одиночным символом.
 
-[…] Совпадает с любым символом из ...; диапазоны задают в виде a-z.
+	[…] : Совпадает с любым символом из ...; диапазоны задают в виде a-z.
 
-[ˆ…] Совпадает с любым cимволом, кроме указанного в ...; можно задавать
-диапазон.
+	[ˆ…] : Совпадает с любым cимволом, кроме указанного в ...; можно задавать диапазон.
 
-\n Строка с которой совпало n-ное подвыражение \(...\).
+	\''n'' : Строка с которой совпало ''n''-ное подвыражение \(...\), где 0 ≤ ''n'' ≤ 9.
 
-\(…\) Превращает … в подвыражение.
+	\(…\) : Превращает … в подвыражение.
 
-''r''*  Совпадает с выражением ''r'' ноль или больше раз; совпадает с пустой строкой.
+	''r''*  : Совпадает с выражением ''r'' ноль или больше раз; совпадает с пустой строкой.
 
-''r''\{''x''\} Совпадает с выражением ''r'' точно ''x'' раз.
+	''r''\{''x''\} : Совпадает с выражением ''r'' точно ''x'' раз.
 
-''r''\{''x'',\} Совпадает с выражением ''r'' от ''x'' раз и больше.
+	''r''\{''x'',\} : Совпадает с выражением ''r'' от ''x'' раз и больше.
 
-''r''\{''x'',''y''\} Совпадает с выражением ''r'' от ''x'' раз до ''y'' раз (включительно).
+	''r''\{''x'',''y''\} : Совпадает с выражением ''r'' от ''x'' раз до ''y'' раз (включительно).
 
-''r1'' ''r2'' Конкатенация (объединение) выражений ''r1'' и ''r2''.
+	''r1'' ''r2'' : Конкатенация (объединение) выражений ''r1'' и ''r2''.
 
--- Литература
+- Литература
 
 	1 The Open Group Base Specifications Issue 7 [Электронный ресурс] : Regular Expressions / The IEEE and The Open Group. — IEEE Std 1003.1, 2013 Edition. — 2013. — Режим доступа: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html, свободный.