單詞全字匹配查找用的是 單詞邊界 \b查找的關鍵字\b
string類中有個IndexOf和Contains方法,但這2個方法都是包含的意思。
包含
從下面這個圖可以看出邊界和包含的區別,下面每一行都包含roman這個關鍵字,但不是每行都全字匹配roman的 (這里正則開啟了忽略大小寫了).
此圖中包含 每行都有roman ,相當於string類的IndexOf,Contains
邊界限制
此圖是是使用了邊界 全字匹配
只有完全一樣的才符合結果
\broman\b 正則寫法
正則寫成 \b{s}\b 這對C#來說就是 bromanb而不是正則的\broman\b,所以正則要寫成這樣 \\b{s}\\b
/// <summary> ///單詞全字 匹配查找 /// </summary> /// <param name="s">要查找的字符串,不區分大小寫</param> /// <returns>查到返回真,否則返回假</returns> public static bool Find(string res, string s) { return Regex.IsMatch(res, $"\\b{s}\\b", RegexOptions.IgnoreCase); }
附注:
測試用的文本
正則表達式網址:https://regexr.com/
English Romanticism 英國浪漫主義 German romanticism 德國浪漫主義 Roman Serif 字體 Romanticism literature 唯美主義文學 Uppercase roman 大寫羅馬數碼 early romanticism 前期浪漫主義 holy roman empire n.神聖羅馬帝國 new romantic 新浪漫;新浪漫主義 racism romanticism 種族關系 roman architecture 羅馬式建築 roman empire 羅馬帝國(指公元前27年到公元476年的羅馬奴隸制國家) roman law 羅馬法 roman numerals 羅馬數字 romantic love 浪漫愛情 romantic movement 浪漫主義運動(十八世紀末及十九世紀初西歐掀起的文學藝術運動) times new roman 新羅馬字體 western roman empire 西羅馬帝國
string.IndexOf,string,Contains 要查找的字 不區分大小寫
//如果找到該字符串,則為從當前實例的起始位置開始的從零開始的 value 的索引位置;否則為 -1。 如果 value 為 Empty,則返回值為 startIndex。 public static bool Find1(string res, string s) { return res.IndexOf(s, StringComparison.OrdinalIgnoreCase) != -1; } //如果 true 參數出現在此字符串中,或者 value 為空字符串 (""),則為 value;否則為 false。 public static bool Find2(string res, string s) { return res.ToLower().Contains(s.ToLower()); }



