我有一个简单的问题,我希望有人能够为我阐明一些亮点。正则表达式从列表中找到完全匹配
RegEx还是新的,所以这种行为对我来说没有意义。我正在使用C#编写一个简单的函数,用于搜索给定字符串中的子字符串列表以及字符串中的子字符串位置。我的代码如下所示:
DataTable matchtable = new DataTable();
string searchstring = " Take a left in 2.1 miles. Then take a right in 3 miles";
var substringlist = new [] {"2.1 miles", "3 miles", "4.1 miles", "1","take"};
string searchregexstr = string.(@"(\W|^){0}(\W|$)", string.Join("|", substringlist));
Regex searchregex = new Regex(searchregexstr);
if (searchregex.IsMatch(searchstring))
{
foreach (Match substring in searchregex.Matches(searchstring))
{
string substringmatch = substring.toString();
int indexofsubstringmatch = searchstring.IndexOf(substringmatch);
matchtable.Rows.Add(susbtringmatch, indexofsubstringmatch);
}
return matchtable;
}
return matchtable;
随着我的主要的正则表达式匹配功能看起来像这样:
string searchregexstr = string.(@"(\W|^){0}(\W|$)", string.Join("|", substringlist));
我的问题是:
当我的匹配表结果看,我得到一击这两个2.1英里和1(这是2.1内匹配)
我假设(我认为不正确),我的正则表达式只查找完整的匹配,其中1不应该匹配,因为我t在字符串中找不到。
是否有什么突出的缺失?
非常感谢您提前提供任何帮助!
Zinga