linux匹配行首字符,linux当中的正则/扩展表达式(grep篇)

linux当中的正则/扩展表达式(grep篇)

发布时间:2020-08-25 07:58:30

来源:51CTO

阅读:96

作者:wx5c1cfd6e22842

正则表达式在linux当中我们去使用shell脚本的时候经常会用到正则表达式,所以整理一些我们会用到的表达式,以便提升shell脚本能力

一、正则表达式(1)

通过grep命令实践正则表达式

比如我们去过滤带有bbb字段的行,直接可以通过grep "xx" file去获取到

[root@zhaocheng ~]# cat test1

aaa bbb ooo

cccc dddd eeee

fffff ggggg hhhhh bbbbb

kkkkk pppppp ssssss xxxxxx mmmmmmmm

[root@zhaocheng ~]# grep "bbb" test1

aaa bbb ooo

fffff ggggg hhhhh bbbbb

比如去过滤出以aaa开头的行,我们就需要使用^去匹配了,^表示固定行首

引号加不加都可以

[root@zhaocheng ~]# grep "^aaa" test1

aaa bbb ooo

[root@zhaocheng ~]# grep '^aaa' test1

aaa bbb ooo

[root@zhaocheng ~]# grep ^aaa test1

aaa bbb ooo

^是匹配行首,而$是匹配行尾,可以试一下,引号也可以不加

[root@zhaocheng ~]# grep mm$ test1

kkkkk pppppp ssssss xxxxxx mmmmmmmm

[root@zhaocheng ~]# grep 'mm$' test1

kkkkk pppppp ssssss xxxxxx mmmmmmmm

[root@zhaocheng ~]# grep "mm$" test1

kkkkk pppppp ssssss xxxxxx mmmmmmmm

比如匹配一个单词,直接可以使用^xx$也就是匹配行首与行尾,grep -n 顺便输出行号,--color颜色

[root@zhaocheng ~]# grep ^today$ test1

today

[root@zhaocheng ~]# grep -n --color ^today$ test1

1:today

[root@zhaocheng ~]# grep -n ^today$ test1

1:today

那么^$是空行的意思,匹配空行,在第四行输出一个空格,使用^$也能匹配到

[root@zhaocheng ~]# grep ^$ test1

[root@zhaocheng ~]# grep -n ^$ test1

4:

在grep中去匹配一个词的词首或者词尾

[root@zhaocheng ~]# grep "\

Beijing

[root@zhaocheng ~]# grep "beijinG\>" test1

beijinG

[root@zhaocheng ~]# grep "\

Beijing

[root@zhaocheng ~]# grep "G\>" test1

beijinG

也可以固定词首与词尾

[root@zhaocheng ~]# grep -n --color "\" test1

6:Beijing is beijin ya

除了\

除了\>固定词尾还可以使用\b也可以固定词尾

[root@zhaocheng ~]# grep -n --color "\bccc" test1

5:cccc dddd eeee

[root@zhaocheng ~]# grep -n --color "eee\b" test1

5:cccc dddd eeee

[root@zhaocheng ~]# grep -n --color "\beeee\b" test1

5:cccc dddd eeee

这个b还有一个兄弟B,这个属于是匹配“非单词边界的"

可以看出匹配第一个bb的时候是除了bb开头之外的词首都匹配到了

下面的匹配除了匹配到bbb开头的词首其他的都去匹配

[root@zhaocheng ~]# grep -n --color "\Bbb" test1

2:aaa bbb ooo

7:fffff ggggg hhhhh bbbbb

[root@zhaocheng ~]# grep -n --color "\Bbbb" test1

7:fffff ggggg hhhhh bbbbb

小结:

^:表示固定行首,词字符后面任意内容必须出现在行首,才能匹配

$:表示固定行尾,词字符前面的任意内容必须出现在行尾,才能匹配

^$:表示匹配空行,这里所描述的空行表示‘回车’,而空格或tab,等都不能算作此处所描述的空行

^abc$:表示abc独占一行时,会被匹配到

\

\>或者\b:匹配单词边界,表示固定词尾,其前面的字符必须作为单词尾部出现

\B:匹配非单词边界,与\b相反

二、正则表达式(2)

找出文本中有哪几行包含两个连续的字母image

比如找出yaml文件中有哪些以image开头的单词

[root@zhaocheng files]# grep -n "image" coredns.yaml

111: image: zhaocheng172/coredns:1.2.2

112: imagePullPolicy: IfNotPresent

如果一个文本中有很多的单词,但是只想去匹配单词中相同的字段的含有两个连续的

[root@zhaocheng ~]# grep -n "b\{2\}" test3

4:bb

6:bbb

[root@zhaocheng ~]# grep -n "a\{2\}" test3

1:aa

3:aaa a a aa

8:aaiip

9:aallo aahuy

匹配次数的正则符号, 这个我们经常会用到,匹配任意字符的时候表示匹配任意长度的任意字符

但是在正则表达式中,表示之前的字符连续出现任意次数(包括0次)比如匹配ap也就是a可以出现任意次,但是后面必须有p跟着

[root@zhaocheng ~]# grep -n "a*p" test3

7:appaly aoopa

8:aaiip

*匹配o也就是o之后的任意字符**

[root@zhaocheng ~]# grep -n --color "o*" test2

1:aaa#bbb#ooo

2:cccc#dddd#eeee

3:fffff#ggggg#hhhhh

4:kkkkk#pppppp#ssssss

在通配符中表示任意长度字符,在正则表达式中而用.来匹配

[root@zhaocheng ~]# grep -n --color "o.*" test1

1:today

2:aaa bbb ooo

正则表达式中的.代表后任意一个单个字符,..就是任意两个字符都会匹配到

[root@zhaocheng ~]# grep -n "y." test

6:sync:x:5:0:sync:/sbin:/bin/sync

[root@zhaocheng ~]# grep -n "y.." test

6:sync:x:5:0:sync:/sbin:/bin/sync

[root@zhaocheng ~]# grep -n "y..." test

6:sync:x:5:0:sync:/sbin:/bin/sync

三、正则表达式(3)常用符号

[[:alpha:]]是匹配所有任意字母带字母的

[root@zhaocheng ~]# grep "[[:alpha:]]" test4

a

a9o

afghj9gh

abcd

aBDc

abdD

a124

a1a4

a%

前面加个a也就是一个带字母的,默认

[root@zhaocheng ~]# grep "a[[:alpha:]]" test4

afghj9gh

abcd

aBDc

abdD

也就是匹配a后面三个带字母的

[root@zhaocheng ~]# grep "a[[:alpha:]]\{3\}" test4

afghj9gh

abcd

aBDc

abdD

匹配a后面2个带字母的

[root@zhaocheng ~]# grep "a[[:alpha:]]\{2\}" test4

afghj9gh

abcd

aBDc

abdD

比如三个字符都必须是小写的话

可以使用[[:lower:]] 表示任意小写字母

[root@zhaocheng ~]# grep "a[[:lower:]]" test4

afghj9gh

abcd

abdD

[root@zhaocheng ~]# grep "a[[:lower:]]\{2\}" test4

afghj9gh

abcd

abdD

也可以使用表示任意大写字母

[[:upper:]]

[root@zhaocheng ~]# grep "a[[:upper:]]\{1\}" test4

aBDc

[root@zhaocheng ~]# grep "a[[:upper:]]\{2\}" test4

aBDc

常用符号

[[:alpha:]] 表示任意大小写字母

[[:lower:]] 表示任意小写字母

[[:upper:]] 表示任意大写字母

[[:digit:]] 表示0-9之间的任意单个数字(包括0和9)

[[:alnum:]] 表示任意数字或字母

[[:space:]] 表示任意空白字符,包括空格,tab健

[[:punct:]] 表示任意标点符号

除了[[:lower:]]可以代表小写字母,另外一个”[a-z]"也可以表示任意一个小写字母,[[:lower:]]和[a-z]是一样的

[root@zhaocheng ~]# grep "[a-z]" test4

a

a9o

afghj9gh

abcd

aBDc

abdD

a124

a1a4

a%

[root@zhaocheng ~]# grep "[[:lower:]]" test4

a

a9o

afghj9gh

abcd

aBDc

abdD

a124

a1a4

a%

同理大写[A-Z]和[[:upper:]]也是一样的

[root@zhaocheng ~]# grep "[A-Z]" test4

aBDc

abdD

[root@zhaocheng ~]# grep "[[:upper:]]" test4

aBDc

abdD

使用两种方法来过滤出a字母之后2个的字符

[[:lower:]]小写

[[:upper:]] 大写

[root@zhaocheng ~]# grep "a[a-z]\{2\}" test4

afghj9gh

abcd

apooo

aiuhh

abdD

[root@zhaocheng ~]# grep "a[[:lower:]]\{2\}" test4

afghj9gh

abcd

apooo

aiuhh

abdD

[root@zhaocheng ~]# grep "a[A-Z]\{2\}" test4

aBDc

[root@zhaocheng ~]# grep "a[[:upper:]]\{2\}" test4

aBDc

另外还有一个任意字符也就是[[:alpha:]]它和[a-zA-Z]意思一样

[root@zhaocheng ~]# grep "[[:alpha:]]" test4

a

a9o

afghj9gh

abcd

apooo

aiuhh

aBDc

abdD

a124

a1a4

a%

[root@zhaocheng ~]# grep "[a-zA-Z]" test4

a

a9o

afghj9gh

abcd

apooo

aiuhh

aBDc

abdD

a124

a1a4

a%

同理[0-9]和[[:digit:]]等效,都表示0-9之间任意单个数字

[root@zhaocheng ~]# grep "[[:digit:]]" test4

a9o

afghj9gh

a124

a1a4

[root@zhaocheng ~]# grep "[0-9]" test4

a9o

afghj9gh

a124

a1a4

这个中间的[a-z]也就是所有的小写字母,也可以匹配相关字符

[root@zhaocheng ~]# grep "b[ad]" test5

ba

bd

也可以匹配特殊字符,[ ]表示匹配指定范围内的任意单个字符

[root@zhaocheng ~]# grep "b[cP@*&]" test5

bc

bP

b&

b*

b@

过滤除了这些符号之外的字符

[root@zhaocheng ~]# grep "b[^cP@*&]" test5

ba

bd

bf

bg

使用[^a-z]排除这个以外的字符

[root@zhaocheng ~]# grep "b[^A-Z]" test5

ba

bc

bd

bf

bg

b&

b*

b@

[root@zhaocheng ~]# grep "b[^a-z]" test5

bP

b&

b*

b@

同理

[^a-z]表示非小写字母的单个字符可以被匹配到

[^A-Z]表示非大写字母的单个字符可以被匹配到

[^a-zA-Z]表示非字母的单个字符可以被匹配到,比如数字或符号

[^a-zA-Z0-9]表示非字母、非数字的单个字符可以被匹配到,比如符号

前面试到[a-z]和[[:lower:]]等效那么在^中也是等效的

[root@zhaocheng ~]# grep "b[^[:lower:]]" test5

bP

b&

b*

b@

也就是[^0-9]和[^[:digit:]]等效

[^a-z]和[^[:lower:]等效

[^A-Z]和[^[:upper:]]等效

[^a-zA-Z]和[^[:alpha:]等效

[^a-zA-Z0-9]和[^[:alnum:]等效

除了[0-9], [[:digit:]]可以表示数字,而且还可以使用\d来表示数字

[root@zhaocheng ~]# grep -P "b\d" test5

b3

b4

b5

显示任意单个非数字字符

[root@zhaocheng ~]# grep -P "b\D" test5

ba

bc

bd

bf

bg

bP

b&

b*

b@

\d表示任意单个0-9的数字

\D表示任意单个非数字字符

\t表示匹配单个横向制表符(相当于一个tab健)

\s表示匹配单个空白字符,包括空格,tab制表符等

\S表示匹配单个非空白字符

四、正则表达式 转义符

常用符号"\",转义符

之前我们用到了.正则代表匹配后面任意字符,但是如果这个文本中就有这个点,直接匹配的话,也会匹配到其他的,这里我们就需要使用转义符\来匹配

[root@zhaocheng ~]# grep "a.." test4

a9o

afghj9gh

abcd

apooo

aiuhh

aBDc

abdD

a124

a1a4

a..

[root@zhaocheng ~]# grep "a\.\." test4

a..

如果想匹配反斜杠本身的话

可以使用''单引号来进行匹配,'\'匹配一个

[root@zhaocheng ~]# grep 'a\\' test4

a\\\

[root@zhaocheng ~]# grep 'a\\\\' test4

a\\\

[root@zhaocheng ~]# grep 'a\\\\\\' test4

a\\\

五、正则表达式小结

#################常用符号#################

. 表示任意单个字符。

表示前面的字符连续出现任意次,包括0次。

.表示任意长度的任意字符,与通配符中的的意思相同。

\ 表示转义符,当与正则表达式中的符号结合时表示符号本身。

[ ]表示匹配指定范围内的任意单个字符。

[^ ]表示匹配指定范围外的任意单个字符。

#################单个字符匹配相关#################

[[:alpha:]] 表示任意大小写字母。

[[:lower:]] 表示任意小写字母。

[[:upper:]] 表示任意大写字母。

[[:digit:]] 表示0到9之间的任意单个数字(包括0和9)。

[[:alnum:]] 表示任意数字或字母。

[[:space:]] 表示任意空白字符,包括"空格"、"tab键"等。

[[:punct:]] 表示任意标点符号。

[^[:alpha:]] 表示单个非字母字符。

[^[:lower:]] 表示单个非小写字母字符。

[^[:upper:]] 表示单个非大写字母字符。

[^[:digit:]] 表示单个非数字字符。

[^[:alnum:]] 表示单个非数字非字母字符。

[^[:space:]] 表示单个非空白字符。

[^[:punct:]] 表示单个非标点符号字符。

[0-9]与[[:digit:]]等效。

[a-z]与[[:lower:]]等效。

[A-Z]与[[:upper:]]等效。

[a-zA-Z]与[[:alpha:]]等效。

[a-zA-Z0-9]与[[:alnum:]]等效。

[^0-9]与[^[:digit:]]等效。

[^a-z]与[^[:lower:]]等效。

[^A-Z]与[^[:upper:]]等效

[^a-zA-Z]与[^[:alpha:]]等效

[^a-zA-Z0-9]与[^[:alnum:]]等效

#简短格式并非所有正则表达式解析器都可以识别。

\d 表示任意单个0到9的数字。

\D 表示任意单个非数字字符。

\t 表示匹配单个横向制表符(相当于一个tab键)。

\s表示匹配单个空白字符,包括"空格","tab制表符"等。

\S表示匹配单个非空白字符。

#################次数匹配相关#################

\? 表示匹配其前面的字符0或1次

+ 表示匹配其前面的字符至少1次,或者连续多次,连续次数上不封顶。

{n} 表示前面的字符连续出现n次,将会被匹配到。

{x,y} 表示之前的字符至少连续出现x次,最多连续出现y次,都能被匹配到,换句话说,只要之前的字符连续出现的次数在x与y之间,即可被匹配到。

{,n} 表示之前的字符连续出现至多n次,最少0次,都会陪匹配到。

{n,}表示之前的字符连续出现至少n次,才会被匹配到。

#################位置边界匹配相关#################

^:表示锚定行首,此字符后面的任意内容必须出现在行首,才能匹配。

$:表示锚定行尾,此字符前面的任意内容必须出现在行尾,才能匹配。

^$:表示匹配空行,这里所描述的空行表示"回车",而"空格"或"tab"等都不能算作此处所描述的空行。

^abc$:表示abc独占一行时,会被匹配到。

\

\>或者\b :匹配单词边界,表示锚定词尾,其前面的字符必须作为单词尾部出现。

\B:匹配非单词边界,与\b正好相反。

#################分组与后向引用#################

( ) 表示分组,我们可以将其中的内容当做一个整体,分组可以嵌套。

(ab) 表示将ab当做一个整体去处理。

\1 表示引用整个表达式中第1个分组中的正则匹配到的结果。

\2 表示引用整个表达式中第2个分组中的正则匹配到的结果。

[root@zhaocheng ~]# cat shengri.txt

小卡 19901119

小红 19920105

小里 19930211

小会 19940325

小黑 19950418

匹配1993开头的

[root@zhaocheng ~]# grep "\b1993[0-9]\{4\}\b" shengri.txt

小里 19930211

这里意思\<1992,\b1992都是固定词首,[[:digit:]]和[0-9]都可以表示数字,{4}后面4个的字母结尾\>,\b都是固定词尾

[root@zhaocheng ~]# grep "\<1992[[:digit:]]\{4\}\>" shengri.txt

小红 19920105

[root@zhaocheng ~]# grep "\<1992[[:digit:]]\{4\}\b" shengri.txt

小红 19920105

[root@zhaocheng ~]# grep "\b1992[[:digit:]]\{4\}\b" shengri.txt

小红 19920105

[root@zhaocheng ~]# grep "\b1992[[:digit:]]\{4\}\>" shengri.txt

小红 19920105

六、扩展正则表达式

不管是在基本正则表达式中还是扩展正则表达式中,有的通用的符号所表达的意思是相同的

. 表示任意单个字符。

表示前面的字符连续出现任意次,包括0次。

.表示任意长度的任意字符,与通配符中的的意思相同。

\ 表示转义符,当与正则表达式中的符号结合时表示符号本身。

[ ]表示匹配指定范围内的任意单个字符。

[^ ]表示匹配指定范围外的任意单个字符。

[[:alpha:]] 表示任意大小写字母。

[[:lower:]] 表示任意小写字母。

[[:upper:]] 表示任意大写字母。

[[:digit:]] 表示0到9之间的任意单个数字(包括0和9)。

[[:alnum:]] 表示任意数字或字母。

[[:space:]] 表示任意空白字符,包括"空格"、"tab键"等。

[[:punct:]] 表示任意标点符号。

[^[:alpha:]] 表示单个非字母字符。

[^[:lower:]] 表示单个非小写字母字符。

[^[:upper:]] 表示单个非大写字母字符。

[^[:digit:]] 表示单个非数字字符。

[^[:alnum:]] 表示单个非数字非字母字符。

[^[:space:]] 表示单个非空白字符。

[^[:punct:]] 表示单个非标点符号字符。

[0-9]与[[:digit:]]等效。

[a-z]与[[:lower:]]等效。

[A-Z]与[[:upper:]]等效。

[a-zA-Z]与[[:alpha:]]等效。

[a-zA-Z0-9]与[[:alnum:]]等效。

[^0-9]与[^[:digit:]]等效。

[^a-z]与[^[:lower:]]等效。

[^A-Z]与[^[:upper:]]等效

[^a-zA-Z]与[^[:alpha:]]等效

[^a-zA-Z0-9]与[^[:alnum:]]等效

^:表示锚定行首,此字符后面的任意内容必须出现在行首,才能匹配。

$:表示锚定行尾,此字符前面的任意内容必须出现在行尾,才能匹配。

^$:表示匹配空行,这里所描述的空行表示"回车",而"空格"或"tab"等都不能算作此处所描述的空行。

^abc$:表示abc独占一行时,会被匹配到。

\

\>或者\b :匹配单词边界,表示锚定词尾,其前面的字符必须作为单词尾部出现。

\B:匹配非单词边界,与\b正好相反。

grep命令默认只支持基本正则表达式,如果想让grep支持扩展正则表达式,则需要使用-E选项,不过这些70%都是通用的符号,查看效果

[root@zhaocheng ~]# grep "b[a-z]" test5

ba

bc

bd

[root@zhaocheng ~]# egrep "b[a-z]" test5

ba

bc

bd

[root@zhaocheng ~]# grep -E "b[a-z]" test5

ba

bc

bd

另外的30%的与基本正则表达式相比,稍微不同一些,不过看起来比正则还要好理解

在正则表达式中{n}表示前面的字符连续出现n次,将会被匹配到

在扩展正则表达式中,{n}表示前面的字符连续出现n次,将会匹配到

在基本正则表达式中,( )表示分组,(ab)表示将ab当作一个整体去处理

在扩展正则表达式中,( )表示分组,(ab)表示将ab当作一个整体去处理

在扩展正则表达式中:

()表示分组

(ab) 表示将ab当作一个整体去处理

\1 表示引用整个表达式中第一个分组的正则匹配到的结果

\2 表示引用整个表达式中第二个分组的正则匹配到的结果

? 表示匹配其前面的字符0或1次

表示匹配其前面的字符至少1次,或者连续多次,连续次数上不封顶

{n} 表示前面的字符连续出现n次,将会匹配到

{x,y}表示之前的字符至少连续出现x次,最多连续出现y次,都能匹配到

{,n} 表示之前的字符连续出现至多n次,最少0次,都会匹配到

{n,}表示之前的字符连续出现至少n次,才会匹配到

在扩展表达式中,还有一个比较常用的符号,是基本正则表达式中没有的,它就是“|”

它的意思是表示或

[root@zhaocheng ~]# cat test6

kubernetes.com

jenkins.com

rabbitmq.com

zookpeer.com

spring boot.com

dubbo.edu

spring cloud.net

helm.org

找出以.net结尾的行,xxx$以什么为结尾

[root@zhaocheng ~]# grep "net$" test6

spring cloud.net

[root@zhaocheng ~]# egrep "net$" test6

spring cloud.net

[root@zhaocheng ~]# grep -E "net$" test6

spring cloud.net

比如找出以com,net一样结尾的行就可以使用"|",可以使用egrep或者grep -E,()表示将括号内的内容看作一个整体,

[root@zhaocheng ~]# egrep "(com|net)$" test6

kubernetes.com

jenkins.com

rabbitmq.com

zookpeer.com

spring boot.com

spring cloud.net

[root@zhaocheng ~]# grep -E "(com|net)$" test6

kubernetes.com

jenkins.com

rabbitmq.com

zookpeer.com

spring boot.com

spring cloud.net

也可以这么写,不过没有(com|net)$精确,$这个是以什么结尾

[root@zhaocheng ~]# grep -E "com|net" test6

kubernetes.com

jenkins.com

rabbitmq.com

zookpeer.com

spring boot.com

spring cloud.net

常用扩展表达式小结

常用符号

. 表示任意单个字符。

表示前面的字符连续出现任意次,包括0次。

.表示任意长度的任意字符,与通配符中的的意思相同。

\ 表示转义符,当与正则表达式中的符号结合时表示符号本身。

| 表示"或者"之意

[ ]表示匹配指定范围内的任意单个字符。

[^ ]表示匹配指定范围外的任意单个字符。

单个字符匹配相关

[[:alpha:]] 表示任意大小写字母。

[[:lower:]] 表示任意小写字母。

[[:upper:]] 表示任意大写字母。

[[:digit:]] 表示0到9之间的任意单个数字(包括0和9)。

[[:alnum:]] 表示任意数字或字母。

[[:space:]] 表示任意空白字符,包括"空格"、"tab键"等。

[[:punct:]] 表示任意标点符号。

[^[:alpha:]] 表示单个非字母字符。

[^[:lower:]] 表示单个非小写字母字符。

[^[:upper:]] 表示单个非大写字母字符。

[^[:digit:]] 表示单个非数字字符。

[^[:alnum:]] 表示单个非数字非字母字符。

[^[:space:]] 表示单个非空白字符。

[^[:punct:]] 表示单个非标点符号字符。

[0-9]与[[:digit:]]等效。

[a-z]与[[:lower:]]等效。

[A-Z]与[[:upper:]]等效。

[a-zA-Z]与[[:alpha:]]等效。

[a-zA-Z0-9]与[[:alnum:]]等效。

[^0-9]与[^[:digit:]]等效。

[^a-z]与[^[:lower:]]等效。

[^A-Z]与[^[:upper:]]等效

[^a-zA-Z]与[^[:alpha:]]等效

[^a-zA-Z0-9]与[^[:alnum:]]等效

次数匹配相关

? 表示匹配其前面的字符0或1次

表示匹配其前面的字符至少1次,或者连续多次,连续次数上不封顶。

{n} 表示前面的字符连续出现n次,将会被匹配到。

{x,y} 表示之前的字符至少连续出现x次,最多连续出现y次,都能被匹配到,换句话说,只要之前的字符连续出现的次数在x与y之间,即可被匹配到。

{,n} 表示之前的字符连续出现至多n次,最少0次,都会陪匹配到。

{n,}表示之前的字符连续出现至少n次,才会被匹配到。

位置边界匹配相关

^:表示锚定行首,此字符后面的任意内容必须出现在行首,才能匹配。

$:表示锚定行尾,此字符前面的任意内容必须出现在行尾,才能匹配。

^$:表示匹配空行,这里所描述的空行表示"回车",而"空格"或"tab"等都不能算作此处所描述的空行。

^abc$:表示abc独占一行时,会被匹配到。

\

\>或者\b :匹配单词边界,表示锚定词尾,其前面的字符必须作为单词尾部出现。

\B:匹配非单词边界,与\b正好相反。

分组与后向引用

( ) 表示分组,我们可以将其中的内容当做一个整体,分组可以嵌套。

(ab) 表示将ab当做一个整体去处理。

\1 表示引用整个表达式中第1个分组中的正则匹配到的结果。

\2 表示引用整个表达式中第2个分组中的正则匹配到的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值