我正在寻找一个C#正则表达式来匹配一个句子中的完整单词。
我的句子和模式如下所示。
string mySentence = "There is no gain in this world without pain";
string mypattern = string.Format(@"(?:(?<=^|\s)(?=\S)|(?<=\S|^)(?=\s)){0} (?:(?<=\S)(?=\s|$)|(?<=\s)(?=\S|$))", "pain");
MatchCollection matches = Regex.Matches(mySentence, mypattern);我没有得到任何匹配使用上述模式。
但如果我用这个图案我就能找到匹配的。
string mypattern = string.Format(@"\b{0}\b", "patient");但问题是,它匹配连字符分隔的词,如在疼痛,在那里,因为我正在寻找一个完整的词。
感谢您的帮助,谢谢
发布于 2017-03-22 11:07:58
场景#1 (word(s)前面没有/后面没有连字符)
使用(?<!-) (搜索短语之前没有- )和(?!-) (搜索短语后面没有- )和\b
var mypattern = string.Format(@"(?<!-)\b{0}\b(?!-)", Regex.Escape(search));场景#2 (带空格的word)
我正在寻找匹配的单词,它可以后面或前面的换行符或空格。
你需要像这样使用观景器:
var mypattern = string.Format(@"(?<!\S){0}(?!\S)", Regex.Escape(search));(?<!\S)查找(等于(?<=\s|^))在搜索单词之前需要一个空格或字符串的开始。(?!\S)负查找将需要在搜索单词之后使用空格符号。
Regex.Escape是一个预先警告步骤,以确保搜索单词中的所有特殊字符都被视为文字字符。
注意:如果您的“单词”不包含空格,则不需要正则表达式。使用
var search = "this";
var sentence = "There is no gain in this world without pain";
var isPresent = sentence.Split().Contains(search);
Console.Write(isPresent); // = > Truehttps://stackoverflow.com/questions/42949789
复制相似问题