如下,问题在注释中,麻烦帮忙解答一下,谢谢
正则表达式的符号懂,但是下图“会一直匹配到12后面的/,这样 结果就是['23']”是怎么推理得出的?
“括号里的内容从2018的2开始匹配,因为后面一个数字 是0,那么也就满足了(\d.*?\d)”又是怎么推理得出的?
重要的一点是,点星号(.*)表示0个或任意个任意字符。
所以贪婪搜索的话,23之前都满足匹配条件,然后小括号是捕获组,只显示23
而懒惰搜索(非贪婪)的话,两个连续的数字就满足条件 (\d.*?\d) 了
20
一共两个\d
,中间那个非贪婪.*?
啥都没匹配到,18
同理发布于20
被前面的.*?
吸收了两个\d
只匹配到18
,一个\d
只能匹配一个数字而不是一个数
.*(\d.*\d)
.代表除了换行符外的任意字符
*匹配0个或多个的表达式
.*组合起来就代表匹配任意多个换行符外的任意字符
\d是匹配一个数值字符
\d.*\d组合是匹配以数值字符开头,中间任意数据,以一个数值字符结尾
.*(\d.*\d):首先.*代表匹配任意字符,这是贪婪模式,尽可能的匹配多的字符,
你要求.*后面跟一个(任意字符后面有一个数值加任意字符加数值组合)的字符串。那么23就满足\d.*\d
.*就将2018/12/给匹配走了