Инструменты пользователя

Инструменты сайта


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

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
регулярные_выражения [2012/02/15 13:20]
val
регулярные_выражения [2017/04/04 13:30]
val [Регулярные выражения]
Строка 1: Строка 1:
 ====== Регулярные выражения ====== ====== Регулярные выражения ======
 +
 +  * [[https://​youtu.be/​BhbDsKetNn8|Видео:​ Про регулярные выражения]]
  
 <​code>​ <​code>​
 $ man re_format $ man re_format
 +
 +$ man regex
 </​code>​ </​code>​
  
-[[http://​ru.wikipedia.org/​wiki/​Регулярное_выражение]] +  * [[http://​ru.wikipedia.org/​wiki/​Регулярное_выражение|Регулярное ​выражение]] 
- +  ​* ​[[http://​www.ibm.com/​developerworks/​ru/​library/​l-regexp_1/​|Секреты регулярных выражений]] 
-[[http://​www.ibm.com/​developerworks/​ru/​library/​l-regexp_1/​]]+  * [[Команды фильтры#​grep]]
  
 ===== Символы базовых регулярных выражений ===== ===== Символы базовых регулярных выражений =====
- 
-==== Звездочка -- * -- ==== 
-Означает любое количество символа в строке,​ предшествующего "​звездочке",​ в том числе и нулевое число символов. 
- 
-==== Точка -- . -- ==== 
- ​Означает не менее одного любого символа 
  
 ==== Символ -- ^ -- ====  ==== Символ -- ^ -- ==== 
Строка 39: Строка 37:
 ==== Обратный слеш -- \ -- ====  ==== Обратный слеш -- \ -- ==== 
 Служит для экранирования специальных символов,​ это означает,​ что экранированные символы должны интерпретироваться буквально,​ т.е. как простые символы (в некоторых случаях наоборот). Служит для экранирования специальных символов,​ это означает,​ что экранированные символы должны интерпретироваться буквально,​ т.е. как простые символы (в некоторых случаях наоборот).
 +<​code>​
 +echo 172.16.10.254 gate.isp10.un >> /etc/hosts
 +
 +grep -r "​172\.16\.1\."​ /etc
 +</​code>​
 +
 +==== Экранированные "​угловые скобки"​ -- \<​...\>​ -- ====
  
-==== Экранированные "​угловые скобки"​ -- \<​...\>​ -- ====  
 Отмечают границы слова (не работает в sed). Отмечают границы слова (не работает в sed).
 <​code>​ <​code>​
-$ grep '​var'​ /​etc/​login.conf +grep -R '\<sed\>' /usr/share
-        :​setenv=MAIL=/​var/​mail/​$,​BLOCKSIZE=K,​FTP_PASSIVE_MODE=YES:​\ +
-        :​nologin=/​var/​run/​nologin:​\ +
-# Russian Users Accounts. Setup proper environment variables. +
-#       :​setenv=MAIL=/​var/​mail/​$,​BLOCKSIZE=K:​\ +
-#       :​nologin=/​var/​run/​nologin:​\ +
- +
-grep '\<var\>' /etc/login.conf +
-        :​setenv=MAIL=/​var/​mail/​$,​BLOCKSIZE=K,​FTP_PASSIVE_MODE=YES:​\ +
-        :​nologin=/​var/​run/​nologin:​\ +
-#       :​setenv=MAIL=/​var/​mail/​$,​BLOCKSIZE=K:​\ +
-#       :​nologin=/​var/​run/​nologin:​\+
 </​code>​ </​code>​
 +
 +==== Звездочка -- * -- ====
 +Означает любое количество символа в строке,​ предшествующего "​звездочке",​ в том числе и нулевое число символов.
 +
 +==== Точка -- . -- ====
 +
 +Означает один любой символ
 +
 ==== Экранированные "​круглые скобки"​ -- \( \) -- ====  ==== Экранированные "​круглые скобки"​ -- \( \) -- ==== 
 Предназначены для выделения групп регулярных выражений. Они полезны при использовании с оператором "​\|"​ и при извлечении подстроки. Предназначены для выделения групп регулярных выражений. Они полезны при использовании с оператором "​\|"​ и при извлечении подстроки.
 <​code>​ <​code>​
-grep '​daily\|weekly'​ /​etc/​crontab +cat catalog.txt 
-# Perform daily/​weekly/​monthly maintenance+</code><​code>
-1       ​3 ​      ​* ​      ​* ​      ​* ​      ​root ​   periodic daily +
-15      4       ​* ​      ​* ​      ​6 ​      ​root ​   periodic weekly +
- +
-$ grep '​periodic \(daily\|weekly\)' ​/etc/​crontab +
-1       ​3 ​      ​* ​      ​* ​      ​* ​      ​root ​   periodic daily +
-15      4       ​* ​      ​* ​      ​6 ​      ​root ​   periodic weekly +
- +
-$ ls /usr/bin | sed '​s/​\(.*\)/​rm \1/' +
-rm CC +
-rm Mail +
-rm addftinfo +
-... +
-$ ls /usr/bin | sed -n '​s/​\(^a.*\)/​rm \1/​p'​ +
-rm addftinfo +
-rm addr2line +
-rm afmtodit +
-... +
-$ cat catalog.txt ​+
 petrof ivan 234-56-78 petrof ivan 234-56-78
 ivanof sidor 214-56-78 ivanof sidor 214-56-78
-<Ctrl-D> +</​code><​code>
 $ sed '​s/​\(.*\) .* \(.*\)/\1 \2/' catalog.txt $ sed '​s/​\(.*\) .* \(.*\)/\1 \2/' catalog.txt
-petrof 234-56-78 
-ivanof 214-56-78 
 </​code>​ </​code>​
 +
 ==== Экранированные "​фигурные скобки"​ -- \{ \} -- ==== ==== Экранированные "​фигурные скобки"​ -- \{ \} -- ====
 Задают число вхождений предыдущего выражения. Задают число вхождений предыдущего выражения.
Строка 95: Строка 76:
 </​code>​ </​code>​
 ===== Классы символов POSIX ===== ===== Классы символов POSIX =====
-[:class:] это альтернативный способ указания диапазона символов. 
-<​code>​ 
-$ grep '​\<​[[:​alpha:​]]\{X\}\>'​ /​etc/​login.conf 
-        :​ignorenologin:​\ 
-#       :​ignorenologin:​\ 
-#       :​maxmemorysize-cur=128M:​\ 
-#       :​refreshperiod@:​\ 
-#       :​refreshperiod@:​\ 
  
-$ grep '​\<​[A-Za-z]\{X\}\>'​ /​etc/​login.conf +Заменяем в файле catalog.txt ​некоторые ​пробелы на TAB
-</​code>​ +
- +
-Заменяем в файле catalog.txt пробел на TAB+
 <​code>​ <​code>​
 $ sed '​s/​\(.*\)[[:​space:​]].*[[:​space:​]]\(.*\)/​\1 \2/' catalog.txt ​ $ sed '​s/​\(.*\)[[:​space:​]].*[[:​space:​]]\(.*\)/​\1 \2/' catalog.txt ​
Строка 113: Строка 83:
 ivanof 214-56-78 ivanof 214-56-78
 </​code>​ </​code>​
 +
 ===== Символы расширенных регулярных выражений ===== ===== Символы расширенных регулярных выражений =====
  
Строка 128: Строка 99:
 Указывает на то, что предыдущий символ или выражение встречается 1 или более раз (добавляем произвольное количество символов разделителей в файл catalog.txt). Указывает на то, что предыдущий символ или выражение встречается 1 или более раз (добавляем произвольное количество символов разделителей в файл catalog.txt).
 <​code>​ <​code>​
-$ sed -E '​s/​([[:​alpha:​]]+)[[:​space:​]]+.*[[:​space:​]]+([[:​alpha:]]*)/\1 \2/' catalog.txt+$ sed -E '​s/​([[:​alnum:​]]+)[[:​space:​]]+[[:​alnum:​]]+[[:​space:​]]+([[:​alnum:]]+)/\1 \2/' catalog.txt
 petrof 234-56-78 petrof 234-56-78
 ivanof 214-56-78 ivanof 214-56-78
 </​code>​ </​code>​
  
регулярные_выражения.txt · Последние изменения: 2017/04/04 13:30 — val