正则表达式_入门基础

224 阅读3分钟

在线测试工具

http://tool.chinaz.com/regex/



[0-9]:代表匹配0-9之间的数字

[0-9]匹配
如图可获得6个匹配结果



^ : 规定匹配内容开头

^匹配
如图当^匹配内容不以a开头的话则无匹配结果

^匹配
如图当^匹配内容以czx开头的话则匹配1个结果czx

^匹配
如图当^匹配内容以czx0开头的话则匹配0个结果,必须字符串以czx0开头才能匹配接下来的内容。



$: 规定匹配内容结尾(大体与^相似)

$匹配
要求匹配的字符串以czx结尾,如图成功匹配一个内容

$匹配
如图字符串以0czx结尾故无法匹配



[] 包含,默认是一个字符长度

[]匹配
在[]内写了way,那么他会单独匹配 w , a , y 三个字符,如图匹配了三处单字符



. : 匹配除“\n”之外的任何单个字符

要匹配包括“\n”在内的任何字符,请使用像“[\s\S]”的模式。(后文解释\s\S模式)

[.]匹配
如图,图中有2个换行符(回车[\n])和2个0,当用.匹配时只能匹配非\n的字符故只能匹配到2个0

[\s\S]匹配
如图,图中有2个换行符(回车[\n])和2个0,当用[\s\S]***(\s表示空格,\S表示非空格,[]表示匹配[]内表达式的任意一个,即[\s\S]表示的是匹配空格或非空格的内容相当于表达式 [content==" "||content!=" " ] 即包含所有可能)***匹配时能匹配非\n的字符故能匹配到2个0和2个换行(\n)



\:相当于转义符

[\\]匹配
如图只用\n无法将文本的\n匹配

[\\]匹配
如图用\n表示匹配文本内的\n将标识符\n转义成文本\n



*,+,{n},{n,},{n,m}匹配

*:匹配前面的子表达式任意次(0次以上)
+:匹配前面的子表达式1次及一次以上(>=1次以上)
{n}:匹配前面的子表达式n次(==n)
{n,}:匹配前面的子表达式n次及一次以上(>=n次以上)
{n,m}:匹配前面的子表达式n次及n次以上,m次及m次以下(>=n&&<=m次)

![[*]匹配](https://upload-images.jianshu.io/upload_images/10953875-1a90b17e071046eb.png?imageMogr2/auto-orient/strip%7CimageVie w2/2/w/1240) 当匹配0*时,表示匹配0个以上的0字符串

[\*]匹配
用0.*0匹配00时可以匹配,因为.*表示0个及0个字符以上故匹配内容00之间可以不需要有内容

[\+]匹配
可以看出用0.+0匹配的时候无法匹配,+表示匹配一个字符以上,这里匹配内容00之间明显无内容

[\+]匹配
当用0.+0去匹配010时由于00之间有1故00之间有>=1个字符,故可用+匹配到内容

[{n}]匹配
.表示一个除\n外的任意字符,由于匹配文本00之间没有字符故.{1}无法匹配(字符长度<1或>1的情况无法匹配,==1才匹配)

[{n}]匹配
.{1}当匹配文本00之间有字符时,且只有一个字符时匹配成功

[{n}]匹配
.表示一个除\n外的任意字符,由于匹配文本00之间有2个字符故.{1}无法匹配(字符长度<1或>1的情况无法匹配,==1才匹配)

[{n,}]
.{n,}表示匹配n个及n个以上除\n以外的字符

[{n,m}]
.{n,m}表示匹配n个及n个以上且m个及m个以下除\n以外的字符



?:表示尽可能少的匹配

[?]匹配
0.*0匹配时没有?即默认最大长度匹配会在匹配内容内从第一个0匹配到最后一个0,故只可获得1个匹配结果

[?]匹配
0.*0匹配时有?即默认最小长度匹配会在匹配内容内从第一个0匹配到往后最近的一个0,故可获得4个匹配结果