C#中的两个正则表达式 - 有什么区别?

时间:2014-05-29 20:27:41

标签: regex

以下正则表达式之间有什么区别

Write(?:Line)? 

Write(Line)? 

我问的是:

  1. 理解概念
  2. 需要编写正则表达式,该表达式将与单词International的以下变体形式相匹配:Int,Tntl,International

1 个答案:

答案 0 :(得分:4)

?:组是非捕获组,意味着它不会包含在结果中。

//Will match a "WriteLine" or "Write", but will ignore the Line in the result
Write(?:Line)?

//*match* -> *captured as* 
//WriteLine -> Write
//Write -> Write
//Will match a "WriteLine" or "Write"
Write(Line)?

//*match* -> *captured as* 
//WriteLine -> WriteLine
//Write -> Write

#2

的正则表达式

如果我不理解,请纠正我。

如果您想将IntTntl替换为International,请执行以下操作:

var result = Regex.Replace("International:Int,Tntl,International","(Int(ernational)?|Tntl)","International");
// "International:Int,Tntl,International" ->
// "International:International,International,International"

管道符号|充当正则表达式的or运算符。

(International|Int|Tntl)