User Tools

Site Tools


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

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
регулярные_выражения [2012/02/15 13:24]
val
регулярные_выражения [2017/04/04 13:30]
val [Регулярные выражения]
Line 1: Line 1:
 ====== Регулярные выражения ====== ====== Регулярные выражения ======
 +
 +  * [[https://​youtu.be/​BhbDsKetNn8|Видео:​ Про регулярные выражения]]
  
 <​code>​ <​code>​
 $ man re_format $ man re_format
-</​code>​ 
  
-[[http://​ru.wikipedia.org/​wiki/​Регулярное_выражение]]+$ man regex 
 +</code>
  
-[[http://​www.ibm.com/​developerworks/​ru/​library/​l-regexp_1/​]]+  * [[http://​ru.wikipedia.org/​wiki/​Регулярное_выражение|Регулярное выражение]] 
 +  * [[http://​www.ibm.com/​developerworks/​ru/​library/​l-regexp_1/​|Секреты регулярных выражений]] 
 +  * [[Команды фильтры#​grep]]
  
 ===== Символы базовых регулярных выражений ===== ===== Символы базовых регулярных выражений =====
- 
-==== Звездочка -- * -- ==== 
-Означает любое количество символа в строке,​ предшествующего "​звездочке",​ в том числе и нулевое число символов. 
- 
-==== Точка -- . -- ==== 
- ​Означает не менее одного любого символа 
  
 ==== Символ -- ^ -- ====  ==== Символ -- ^ -- ==== 
Line 40: Line 38:
 Служит для экранирования специальных символов,​ это означает,​ что экранированные символы должны интерпретироваться буквально,​ т.е. как простые символы (в некоторых случаях наоборот). Служит для экранирования специальных символов,​ это означает,​ что экранированные символы должны интерпретироваться буквально,​ т.е. как простые символы (в некоторых случаях наоборот).
 <​code>​ <​code>​
-grep 'bin\/​sh' ​/etc/passwd+echo 172.16.10.254 gate.isp10.un >> /​etc/​hosts 
 + 
 +grep -r "172\.16\.1\." ​/etc
 </​code>​ </​code>​
  
Line 49: Line 49:
 grep -R '​\<​sed\>'​ /usr/share grep -R '​\<​sed\>'​ /usr/share
 </​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>​
 +
 ==== Экранированные "​фигурные скобки"​ -- \{ \} -- ==== ==== Экранированные "​фигурные скобки"​ -- \{ \} -- ====
 Задают число вхождений предыдущего выражения. Задают число вхождений предыдущего выражения.
Line 89: Line 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 ​
Line 107: Line 83:
 ivanof 214-56-78 ivanof 214-56-78
 </​code>​ </​code>​
 +
 ===== Символы расширенных регулярных выражений ===== ===== Символы расширенных регулярных выражений =====
  
Line 122: Line 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 · Last modified: 2023/01/10 10:43 by val