Back
Please upgrade your browser or check your network connection.

正则表达式

正则表达式的单字符

特定字符

1'X'

范围字符

1[]
2[^]

第二个里面的^ 是取反向的意思

任意字符

1.  # 代表了任意字符
2
3\. # 被转义,只有本身的意思
4
5[.] # 被范围字符括住,只有本身的意思

正则表达式其他符号

  • 边界字符:头尾字符
1^  # 文本的开始匹配
2
3e.g ^root

注意当^[]里面的时候,代表的是反向。而不是字符开头。

1$  # 文本的结束匹配
2
3e.g  fales$
1^$  # 代表了空行

元字符(代表普通字符或特殊字符)

1\w  #小写
2
3匹配任何字类字符,包括下划线(A-Za-z0-9)
1\W  #大写
2
3匹配任何非字类字符  [^A-Za-z0-9]
4就是那些 ./;'\
 1\b
 2
 3代表单词的分隔
 4
 5e.g
 6
 7匹配  :x:
 8
 9grep '\bx\b' files.txt
10

字符串

 1'root'   '1000' 'm...c'
 2
 3'[A-Z][a-z]'    '[0-9][0-9]'
 4
 5
 6grep '[0-9][0-9]' files.txt
 7符合的不只是两位数
 8这些都能够符合  232365  23 64 2363
 9
10若要取两位数
11就给分隔符
12
13grep ‘\b[0-9][0-9]\b' files.txt

正则表达式字符组合

jpg jpg

1*  01234567.....
2+  1234567......
3?  0 1

jpg

(se)*是代表对se的重复

jpg

重复特定次数 {n,m}

1*   {0}
2
3+   {1,}
4
5?   {0,1}
6
7grep '[0-9]\{2,3\}' files.txt  #匹配2-3位在数字0-9这个范围的数字
8

任意字符串的表示

1.*
2
3因为.*概况得较多,应该用分隔字符 \b 和范围字符 [] 进行限定

逻辑的表示

1|
2
3'/bin\(false\|true\)'

正则表达式案例

找出符合4-10位的QQ号

qq

匹配15位或18位身份证号(支持带X的)

jpg

1grep '^[1-9]([0-9]{13}|[0-9]{16})[0-9Xx]'  #没有转义

匹配密码

1grep '^\w\+$' qq.txt

正则总结

jpg

  • 正则很无情
  • 正则很大度
  • 别忘了''
Licensed under CC BY-NC-SA 4.0