@H_502_0@正则表达式
@H_502_0@
@H_502_0@单个字符表示法
@H_502_0@
@H_502_0@字符本身 <-- 除了下面的特殊字符之外,字符可以表示其本身
@H_502_0@. <-- Any character
@H_502_0@\d <-- Digit in 0123456789
@H_502_0@\D <-- Non-digit
@H_502_0@\w <-- Word: letters,digits,underscore (_)
@H_502_0@\W <-- Non-word
@H_502_0@\t <-- Tab
@H_502_0@\r <-- Carriage return
@H_502_0@\n <-- New line
@H_502_0@\s <-- Whitespace: space,\t,\r,\n
@H_502_0@\S <-- Non-whitespace
@H_502_0@[abc] <-- a,or b,or c
@H_502_0@[a-c] <-- a,or c
@H_502_0@[0-2] <-- 0,or 1,or 2
@H_502_0@[1-3a-cX-Z] <-- 1,2,3,a,b,c,X,Y,Z
@H_502_0@[^abc] <-- Any character except a and b and c
@H_502_0@[:upper:] <-- Upper case letters,[A-Z]
@H_502_0@[:lower:] <-- Lower case letters,[a-z]
@H_502_0@[:alpha:] <-- Alphabetic characters,[a-zA-Z]
@H_502_0@[:alnum:] <-- Alphanumeric characters,[a-zA-Z0-9]
@H_502_0@[:digit:] <-- Digits,[0-9]
@H_502_0@[:xdigit:] <-- Hexadecimal digits,[a-fA-F0-9]
@H_502_0@[:punct:] <-- Punctuation and symbols,[][!"#$%&'()*+,./:;<=>?@\^_`{|}~-]
@H_502_0@[:blank:] <-- Space and tab,[ \t]
@H_502_0@[:space:] <-- All whitespace characters including line breaks,[ \t\r\n\v\f]
@H_502_0@[:cntrl:] <-- Control characters,[\x00-\x1F\x7F]
@H_502_0@[:graph:] <-- Visible characters (i.e. anything except spaces,control characters,etc.),[\x21-\x7E]
@H_502_0@[:print:] <-- Visible characters and spaces (i.e. anything except control characters,[\x20-\x7E]
@H_502_0@[:word:] <-- Word characters (letters,numbers and underscores),[a-zA-Z0-9_]
@H_502_0@[:ascii:] <-- ASCII characters,[\x00-\x7F]
@H_502_0@
@H_502_0@
@H_502_0@
@H_502_0@特殊字符表示法
@H_502_0@
@H_502_0@^$.*+?|\{}[]() 都有特殊意义的,如果需要表示这些符号,则可以用反斜杠对它们进行转义,比如:
@H_502_0@\. 匹配一个点
@H_502_0@\\ 匹配一个反斜杠
@H_502_0@\^
@H_502_0@\$
@H_502_0@
@H_502_0@出现在[...]中的连字符也有特殊意义,如果需要在[...]中表示一个连字符,就要把它放到[...] 的头部或者尾部,比如:
@H_502_0@[abc-] 或者 [-abc]
@H_502_0@
@H_502_0@
@H_502_0@
@H_502_0@数量表示法
@H_502_0@
@H_502_0@用来表示前面的一个字符,或者一组字符重复的次数
@H_502_0@* <-- 任意次,{0,},c >= 0
@H_502_0@+ <-- 至少1次,{1,c >= 1
@H_502_0@? <-- 0次或者1次,1},c == 0 || c == 1
@H_502_0@{m} <-- m 次,c == m
@H_502_0@{m,} <-- 至少m 次,c >= m
@H_502_0@{m,n} <-- m 次至n 次,c >= m && c <= n
@H_502_0@
@H_502_0@数量表示符作用于前面的一个字符,或者一组字符,用小括号括起来的就是一组字符。
@H_502_0@ab+ 匹配ab,abb,abbb,abbbb...
@H_502_0@(ab)+ 匹配ab,abab,ababab,abababab...
@H_502_0@
@H_502_0@默认情况下,数量表示符是最大匹配,某些正则表达式引擎支持用问号 ? 来启用最小匹配
@H_502_0@.*b 匹配 aaabababa <-- 最大匹配
@H_502_0@ ^^^^^^^^
@H_502_0@.*?b 匹配 aaabababa <-- 最小匹配
@H_502_0@ ^^^^
@H_502_0@
@H_502_0@
@H_502_0@
@H_502_0@分组表示法
@H_502_0@
@H_502_0@(abc) <-- 一组连续的字符abc
@H_502_0@(aa|bb) <-- 一组连续的字符ab 或者 bb
@H_502_0@
@H_502_0@
@H_502_0@
@H_502_0@边界表示法
@H_502_0@
@H_502_0@^ <-- 字符串的开头
@H_502_0@$ <-- 字符串的结尾
@H_502_0@\b <-- 单词边界
@H_502_0@\B <-- 非单词边界
@H_502_0@\< <-- 单词左边界
@H_502_0@\> <-- 单词右边界
@H_502_0@
@H_502_0@
@H_502_0@
@H_502_0@引用表示法
@H_502_0@
@H_502_0@从左边开始数左小括号(openning brace),数字从1开始,被第一对括号匹配的字符可以用\1 来引用,第二对可以用\2 来引用,以此类推。
@H_502_0@[czl@mob shell_03]$ echo abcabcabcaabb | grep -E '(a(bc)){2}\1' --color
@H_502_0@abcabcabcaabb
@H_502_0@[czl@mob shell_03]$ echo abcabcabcaabb | grep -E '(a(bc)){2}a\2' --color
@H_502_0@abcabcabcaabb
@H_502_0@[czl@mob ~]$ echo "hello world,hello world,hello beautiful world" | grep -E --color '((hello) (world)),\1,\2 .* \3'
@H_502_0@hello world,hello beautiful world 原文链接:https://www.f2er.com/bash/388258.html