不区分大小写正则expression式,不使用RegexOptions枚举

是否有可能在C#中使用Regex类而不设置RegexOptions.IgnoreCase标志在不区分大小写的匹配?

我希望能够做的是在正则expression式中定义我是否希望匹配操作以不区分大小写的方式完成。

我希望这个正则expression式taylor匹配下列值:

  • 泰勒
  • 泰勒
  • 泰勒

MSDN文档

(?i)taylor匹配我指定的所有input,而不必设置RegexOptions.IgnoreCase标志。

为了强制区分大小写,我可以做(?-i)taylor

它看起来像其他选项包括:

  • i ,不区分大小写
  • s ,单线模式
  • m ,多线模式
  • x ,自由间距模式

正如你已经发现的那样, (?i)RegexOptions.IgnoreCase的在线等价RegexOptions.IgnoreCase

只是供参考,你可以用它做一些技巧:

 Regex: a(?i)bc Matches: a # match the character 'a' (?i) # enable case insensitive matching b # match the character 'b' or 'B' c # match the character 'c' or 'C' Regex: a(?i)b(?-i)c Matches: a # match the character 'a' (?i) # enable case insensitive matching b # match the character 'b' or 'B' (?-i) # disable case insensitive matching c # match the character 'c' Regex: a(?i:b)c Matches: a # match the character 'a' (?i: # start non-capture group 1 and enable case insensitive matching b # match the character 'b' or 'B' ) # end non-capture group 1 c # match the character 'c' 

而且你甚至可以把这样的标志结合起来: a(?mi-s)bc意思是:

 a # match the character 'a' (?mi-s) # enable multi-line option, case insensitive matching and disable dot-all option b # match the character 'b' or 'B' c # match the character 'c' or 'C' 

正如spoon16所说,它是(?i) 。 MSDN有一个正则expression式选项列表,其中包括一个使用不区分大小写匹配匹配部分匹配的例子:

  string pattern = @"\b(?i:t)he\w*\b"; 

这里“t”是不区分大小写的,但其余的区分大小写。 如果不指定子expression式,则为封闭组的其余部分设置该选项。

所以对于你的例子,你可以有:

 string pattern = @"My name is (?i:taylor)."; 

这将匹配“我的名字是泰勒”,而不是“我的名字是泰勒”。