.net Regex.Matches匹配大小写

.net Regex.Matches匹配大小写,.net,regex,.net,Regex,我有一个简短的问题。这是我的部分代码,我得到了X的索引,但我也想得到索引,即使X是小写的。我应该写什么?如果不使用正则表达式,您可以只执行regex.Matches(line.ToLower(),'x')使用I模式修饰符(使正则表达式不区分大小写): 或使用选项: 或者同时指定X和X: foreach (Match match in Regex.Matches(line, "X", RegexOptions.IgnoreCase)) 虽然是一个解决方案,但它效率很低,因为正则表达式匹配现在是一

我有一个简短的问题。这是我的部分代码,我得到了X的索引,但我也想得到索引,即使X是小写的。我应该写什么?

如果不使用正则表达式,您可以只执行
regex.Matches(line.ToLower(),'x')
使用
I
模式修饰符(使正则表达式不区分大小写):

或使用选项:

或者同时指定
X
X

foreach (Match match in Regex.Matches(line, "X", RegexOptions.IgnoreCase))

虽然是一个解决方案,但它效率很低,因为正则表达式匹配现在是一个O(2n)操作,使用
ToLower
。正则表达式匹配不是O(n)吗(老实说,我不知道)?顺便说一句,我在这里没有考虑性能:)正则表达式从定义上讲不是一个O(n)运算,而是在很大程度上取决于表达式本身。我在文本中插错了,但想的是另一句话,它是一个
O(2n)
操作,使用
ToLower
。我原以为它是O(n)当然,您必须遍历字符串才能找到模式。感谢您的澄清。您应该编写
“[Xx]”
。任何正则表达式教程都会涉及到这一点,阅读其中一个教程是在询问是否要使用正则表达式之前采取合理的步骤。如果您只寻找一个字符,那么使用正则表达式是一个重要的解决方案
foreach (Match match in Regex.Matches(line, "(?i)X"))
foreach (Match match in Regex.Matches(line, "X", RegexOptions.IgnoreCase))
foreach (Match match in Regex.Matches(line, "[Xx]"))