2014-01-30 123 views
0

我想要匹配用戶的話語表中的模式。精確/直接字或模式匹配正則表達式

string userUtterance = "I want identification number for number of customers"; 

string pattern1 = "identification number"; 

string pattern2 = "tom"; 

string pattern3 = "id"; 

期望的結果:

bool match1 = regex.Ismatch(userUtterance, pattern1); // should match 

if(match1 == true) 
{ 
    // replace only the matched pattern in userUtterance 
}; 

bool match2 = regex.Ismatch(userUtterance, pattern2); // should not match 

bool match3 = regex.Ismatch(userUtterance, pattern3); // should not match 

我想對使用匹配的語法來限制模棱兩可的匹配和精確匹配字面字正則表達式的一點建議。

感謝

+0

你爲什麼在獲得它的值後將'match1'設置爲一個真值,並且在你設置它爲真後測試它是否爲真? – user2140261

+0

我改變了它。我想用不同的值替換用戶話語中唯一匹配的部分。 – kashif4u

回答

3

可以使用\b word邊界:

"\bonly these words\b" 

這將在這些句子匹配只有這句話

這裏是只有這些字寶貝。

這裏是「只有這些詞」寶貝。

這裏只有這些詞,寶貝。

這裏只有這些單詞。

我說:'只有這些話'。

0

相反的正則表達式替換,你可以只是嘗試如此:

 string userUtterance = "I want identification number for number of customers"; 

     string pattern1 = "identification number"; 

     string pattern2 = "\btom \b"; 

     string pattern3 = "\bid \b"; 

     string replacement = "{YourWordHere}" 

     string newuserUtterance = userUtterance.Replace(pattern1, replacement); 

     bool match2 = Regex.IsMatch(newuserUtterance, pattern2); // should not match 

     bool match3 = Regex.IsMatch(newuserUtterance, pattern3); // should not match 

這將字符串userUtterance與您replacement

更換pattern1然後測試是否tom < =注意空間,在新創建的字符串中,那麼它將測試是否id < =再次注意空格,是否在新字符串中。