我创建了一个如下所示的Regex,但Match方法无法正常工作:
Regex regex = new Regex("(" + SearchText + ")", RegexOptions.IgnoreCase);
if(regex.Match(item).Success) { ... }
例如,如果我将SearchText
设置为e.
,并将item
设置为es
,则表示成功为真。
同样,如果已将SearchText
设置为$
或.
,则与4
的匹配会将Success返回为true。
为什么会这样,我该如何解决这个问题?
答案 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)
当你使用正则表达式时,有一堆具有特殊含义的常见字符。例如,句点(.
)字符将匹配任何字符,因此如果您想匹配单词dog
和dig
,则可以使用正则表达式d.g
。
您可以使用许多不同的特殊字符,您应该看到full .NET Regex documentation了解更多详情。
当你想要匹配某些特定的东西时,这会使特定事物的匹配变得更加复杂,比如句子的结尾。要匹配dog.
,您实际上必须传递dog\.
作为匹配的正则表达式。在将大多数简单字符串传递给Regex构造函数之前,可以使用Regex.Escape(string str)
方法来转义大多数简单字符串。