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:55]
val
регулярные_выражения [2017/04/04 13:30]
val [Регулярные выражения]
Line 1: Line 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]]
  
 ===== Символы базовых регулярных выражений ===== ===== Символы базовых регулярных выражений =====
- 
-==== Звездочка -- * -- ==== 
-Означает любое количество символа в строке,​ предшествующего "​звездочке",​ в том числе и нулевое число символов. 
- 
-==== Точка -- . -- ==== 
- ​Означает не менее одного любого символа 
  
 ==== Символ -- ^ -- ====  ==== Символ -- ^ -- ==== 
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 50: Line 50:
 </​code>​ </​code>​
  
-==== Экранированные "​круглые скобки"​ -- \( \) -- и классы символов ​==== +==== Звездочка -- * -- ==== 
 +Означает любое количество символа в строке,​ предшествующего "​звездочке",​ в том числе и нулевое число символов. 
 + 
 +==== Точка -- . -- ==== 
 + 
 +Означает один любой символ 
 + 
 +==== Экранированные "​круглые скобки"​ -- \( \) -- ==== 
 Предназначены для выделения групп регулярных выражений. Они полезны при использовании с оператором "​\|"​ и при извлечении подстроки. Предназначены для выделения групп регулярных выражений. Они полезны при использовании с оператором "​\|"​ и при извлечении подстроки.
 <​code>​ <​code>​
-$ cat catalog.txt  +$ cat catalog.txt 
-petrof ​   ivan 234-56-78 +</​code><​code>​ 
-ivanof sidor    214-56-78 +petrof ivan 234-56-78 
- +ivanof sidor 214-56-78 
-sed 's/\([[:alnum:]]*\)[[:​space:​]]*[[:​alnum:​]]*[[:​space:​]]*\([[:alnum:]]*\)/\1 \2/' catalog.txt+</​code><​code>​ 
 +sed 's/\(.*\) .* \(.*\)/\1 \2/' catalog.txt
 </​code>​ </​code>​
  
Line 68: 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 86: Line 83:
 ivanof 214-56-78 ivanof 214-56-78
 </​code>​ </​code>​
 +
 ===== Символы расширенных регулярных выражений ===== ===== Символы расширенных регулярных выражений =====
  
Line 101: 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