首页 > 初学正则表达式的疑惑,关于*星号的问题

初学正则表达式的疑惑,关于*星号的问题

在微软的网页上看到正则表达式语法的说明,关于星号是这样写的:

零次或多次匹配前面的字符或子表达式。例如,zo* 匹配“z”和“zoo”。* 等效于 {0,}。

我测试过,像下面这几个
zo
o
z
zoo
oo
我用正则zo*
结果只匹配zo、z、zoo,而o和oo都不匹配
请问上面的解释中,零次或多次匹配前面的字符,在这里,指的是zo*中的z还是zo?如果是o,为什么o与oo都不匹配呢?
我在google搜索过,没有找到能解惑的答案,希望这里的大家能够帮我,谢谢。


这里星号对 o 起作用,所以 o 可以出现零次或多次,所以可以匹配:

z //o 出现0次
zo //o 出现1次
zoo //o 出现2次

而你的 z 是必须的,所以 ooo 都匹配不了。
如果希望星号是对 zo 起作用,可以写成 (zo)*。此时是可以匹配的:

o //zo 出现0次
oo //zo 出现0次
z //zo 出现0次
zo //zo 出现1次
zoo //zo 出现1次

*只是针对它前面的字符或子表达式,而zo*中,整个正则表达的意思是:z后面跟0个或多个o,所以o和oo都不会匹配上了,因为开头的z没有匹配上。


*修饰的是0,至于为什么不匹配 o和oo,是因为你的z也是正则表达式需要匹配的一部分。
翻译成白话就是,z后面带o(0个或者任意个)

【热门文章】
【热门文章】