正则表达式匹配方法无法正常工作

时间:2016-05-04 05:05:37

标签: c# regex

我创建了一个如下所示的Regex,但Match方法无法正常工作:

Regex regex = new Regex("(" + SearchText + ")", RegexOptions.IgnoreCase);
if(regex.Match(item).Success) { ... }

例如,如果我将SearchText设置为e.,并将item设置为es,则表示成功为真。

同样,如果已将SearchText设置为$.,则与4的匹配会将Success返回为true。

为什么会这样,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

另一个问题是,如果你只是在寻找文字,为什么要使用正则表达式。

string item = "bla bla e. bla";
bool result = item.Contains("e."); //returns true

修改

不区分大小写:

result = item.IndexOf("e.", 0, StringComparison.OrdinalIgnoreCase) != -1;

答案 1 :(得分:4)

当你使用正则表达式时,有一堆具有特殊含义的常见字符。例如,句点(.)字符将匹配任何字符,因此如果您想匹配单词dogdig,则可以使用正则表达式d.g

您可以使用许多不同的特殊字符,您应该看到full .NET Regex documentation了解更多详情。

当你想要匹配某些特定的东西时,这会使特定事物的匹配变得更加复杂,比如句子的结尾。要匹配dog.,您实际上必须传递dog\.作为匹配的正则表达式。在将大多数简单字符串传递给Regex构造函数之前,可以使用Regex.Escape(string str)方法来转义大多数简单字符串。