加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

常用正则表达式总结

发布时间:2020-12-13 22:05:32 所属栏目:百科 来源:网络整理
导读:常用正则表达式总结: --目录-- 1)特殊代码 2)反义 3)字符转义 4)重复 5)字符匹配 6)替换(多项匹配) 7)分组 8)位置指定 1、特珠代码: b 表示单词的开头或结束 d+ 表示1位或更多位数字 d 表示数字 t 表示制表符,Tab r 表示回车符 n 表示换行

常用正则表达式总结:

<--目录-->

1)特殊代码

2)反义

3)字符转义

4)重复

5)字符匹配

6)替换(多项匹配)

7)分组

8)位置指定


1、特珠代码:

b 表示单词的开头或结束

d+ 表示1位或更多位数字

d 表示数字

t 表示制表符,Tab

r 表示回车符

n 表示换行符

s 表示代表任意空白字符,包括空格,制表符(Tab),换行符

w 表示字母数字

^ 表示匹配字符串的开始

$ 表示匹配字符串的结束


例子:

0d{2}-d{8} 表示以0开头,d表示必须连续重复出现2次,再以-为分隔符,d表示必须连续重复出现8次数字,跟0dd-dddddddd含意相同

^d{5,12}$ {2}代表只能不多不少重复2次,{5,12}则是必须重复最少5次,最多12次,否则都不匹配

baw*b 匹配以字母a开头的单词-先是某个单词开始处(b),然后是字母a,然后是任意数量的字母或数字(w*),最后是单词结束处(b)。

bw{6}b 匹配刚好6个字母/数字的单词。


注意:"+" 是和 "*" 类似的特殊代码,不同的是*代表重复任意次(可能是0次),而+则代表重复1次或更多次。



2、反义

W 表示匹配任意不是字母和数字的字符

S 表示匹配任意不是空白符的字符

S+ 表示不包含空白符的字符串。

D 表示匹配任意非数字的字符

B 表示匹配不是单词开头或结束的位置

[^x] 表示匹配除了x以外的任意字符

[^wsyht] 表示匹配除了wsyht字母以外的任意字符

<a[^>]+> 表示用尖括号括起来的以a开头的字符串,再匹配除了>以外的其它字符



3、字符转义:

转义前 转义后

. -> .

* -> *

->

^ -> ^

# -> #

( -> (

) -> )



4、重复

. 表示除了换行符之外的其它字符

* 表示前边的内容可以重复任意次,可能是0次

.* 表示任意个字符

+ 表示重复一次或更多次

? 表示零或一次

{n} 表示重复n次

{n,} 表示重复n次或更多次

{n,m} 重复n次到m次


例子;

Windowsd+ 匹配Windows后面跟1个或更多数字

13d{9} 匹配以13后面跟9个数字(中国的手机号)

^w+ 匹配一行的第一个单词(或整个字符串的第一个单词,具体代表哪个意思得看选项设置)



5、字符匹配:

[abcde] 匹配a、b、c、d、e任意一个字母

[!@#$%] 匹配!、@、#、$、%任意一个字符

[0-9] 匹配0到9任意一位数字,和d含意一致

[a-zA-Z0-9] 匹配任意一位数字或字母,不分区分大小写,和w含意一致,和[a-zA-Z]含意一致

[^a-z] 范围内取反

[#_-] 匹配#_-的行

[#-_] 匹配从#到_的行

[?!_-] 范围内匹配字符

^[^a-z] 不以小写字母任意开头的行


匹配MAC地址的正则表达式

00:0c:29:C1:C1:FF


0 1 2 3 4 5 6 7 8 9 A B C D E F

a b c d e f


[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-f]{2}:

[0-9a-fA-F]{2}

可转换成如下:

grep -E '([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}' ifcfg-eth0



6、替换(多项匹配)

0d{2}-d{8}|0d{3}-d{7} 匹配两种以"-"分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)

(0d{2})[- ]?d{8}|0d{2}[- ]?d{8} 匹配3位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字号或空格间隔,也可以没有间隔

d{5}-d{4}|d{5} 匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字

Windows98|Windows2000|WindosXP 匹配Windows98 或 Windows2000 或 WindosXP



7、分组

用小括号来指定子表达式(也叫做分组)

获取IP地址分组展示:

((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)

IP址第1、2、3、4列可能出现的三位数

21[0-9]

22[0-9]

23[0-9]

24[0-9]

251,

252

253

254

255

[01][0-9][0-9]+



8、位置指定

(?=exp) 匹配exp前面的位置

(?<=exp) 匹配exp后面的位置

(?!exp) 匹配后面跟的不是exp的位置

(?<!exp) 匹配前面不是exp的位置


例子:

(?=wsyht) 匹配wsyht前面的位置

(?<=wsyht) 匹配wsyht后面的位置

d{3}(?!d) 匹配三位数字,而且这三位数字的后面不能是数字

(?<![a-z])d{7} 匹配前面不是小写字母的七位数字

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读