我有一個簡單的問題,我希望有人能夠爲我闡明一些亮點。正則表達式從列表中找到完全匹配
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