这个正则表达式意味着什么

har*_*hit 6 c# regex

我真正需要知道的是:

  1. 什么(?(意思?
  2. 什么?:意思?

我想弄清楚的正则表达式是:

(注意以下正则表达式中的上述符号)

(?(?=and )(and )|(blah))(?:[1][9]|[2][0])[0-9][0-9]
Run Code Online (Sandbox Code Playgroud)

Ani*_*dha 3

(?(?=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..