LOADING

加载过慢请开启缓存 浏览器默认开启

正则表达式和通配符

2024/4/20 Linux
  • 通配符
通配符 含义 实例
* 匹配0或多个字符 a*b a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, axyzb, a012b, ab
匹配任意一个字符 a?b a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, abb, acb, a0b
[list] 匹配list中的任意单一字符 a[xyz]b a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如: axb, ayb, azb
[!list]或将’!’改成’^’ 匹配 除list 中的任意单一字符 a[!0-9]b a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如axb, aab, a-b
[c1-c2] 匹配c1-c2中的任意单一字符 a[0-9]b 0与9之间有且只有一个字符,如a0b,a1b。
[!c1-c2] 匹配不在c1-c2的任意字符 a[!0-9]b 如acb adb
  • 正则表达式
字符 含义
^ 以什么开头
$ 以什么结尾
^$ 表示空行
. 任意单个字符 比如a.b ,即a和b直接有任意一个字符
[] 字符范围,如[a-z]
\ 转义字符,恢复字符原来的含义^
* 前面的字符出现0次或多次,比如a*,可以匹配到123a,123aa,123aaa等字符
.* 任意字符出现了任意次
[c1-c2] 匹配c1-c2中的任意单一字符
+ 匹配前一个字符1次或多次(注意与*区分开)
[:/]+ 匹配括号内的字符”:”或者”/“ 1次或多次
匹配前1个字符0次或1次
|
() \n 1个整体 abc123 —–> (abc) (123) —-> \2\1 ( \2表示引用第二个小括号的内容,\1表示引用第一个小括号的内容)
a{n,m} a这个字符最少出现n次,最多出现m次
a{n,} a这个字符最少出现n次,最多不限
a{,m} a这个字符最少出现0次,最多出现m次
  1. 如何表示0到9数字?

    1
    2
    3
    [0-9]
    ##或者
    [:digit:]
  2. 如何表示英文字母?

    1
    2
    3
    [a-zA-Z]
    ##或者
    [:alpha:]
  3. 如何表示“13”头的手机号码?

    1
    13[0-9]{9}
  4. 如何表示电子邮箱地址?

    1
    [a-zA-Z0-9._]+@[A-Za-z0-9.]+\.[a-zA-Z]{2,3}

5.假设我们要搜索美国的社会安全号,格式是999-99-9999,对应的正则表达式

1
[0-9]{3}\-[0-9]{2}\-[0-9]{4}

如果要查找一个文件中“a.txt”的所有邮箱

1
grep -oE '[a-zA-Z0-9._]+@[A-Za-z0-9.]+\.[a-zA-Z]{2,3}' a.txt