我真正需要知道的是:
(?(意思??:意思?我想弄清楚的正则表达式是:
(注意以下正则表达式中的上述符号)
(?(?=and )(and )|(blah))(?:[1][9]|[2][0])[0-9][0-9]
Run Code Online (Sandbox Code Playgroud)
(?(?=and )(and )|(blah))模式的使用类似于 if-then-else ,就像 (?(expression)yes|no)
ieand会被匹配 if andis There elseblah会被匹配
(?:)是一个非捕获组。因此它不会包含在组中或用作反向引用 \1
所以,
(?(?=and )(and )|(blah))(?:[1][9]|[2][0])[0-9][0-9]
Run Code Online (Sandbox Code Playgroud)
会匹配
and 1900
blah2000
and 2012
blah2013
Run Code Online (Sandbox Code Playgroud)
注意(这都是关于组的)
使用这个正则表达式可以实现同样的效果
(and |blah)(?:[1][9]|[2][0])[0-9][0-9]。这些正则表达式唯一不同的是形成的组的数量。
所以我的正则表达式将形成 1 个组,其中包含and或blah
您的正则表达式不会形成任何组。仅当匹配时才会形成一个组blah..