首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >句子中匹配单词的正则表达式

句子中匹配单词的正则表达式
EN

Stack Overflow用户
提问于 2017-03-22 11:04:32
回答 1查看 2.4K关注 0票数 2

我正在寻找一个C#正则表达式来匹配一个句子中的完整单词。

我的句子和模式如下所示。

代码语言:javascript
运行
复制
 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);

我没有得到任何匹配使用上述模式。

但如果我用这个图案我就能找到匹配的。

代码语言:javascript
运行
复制
string mypattern = string.Format(@"\b{0}\b", "patient");

但问题是,它匹配连字符分隔的词,如在疼痛,在那里,因为我正在寻找一个完整的词。

感谢您的帮助,谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-22 11:07:58

场景#1 (word(s)前面没有/后面没有连字符)

使用(?<!-) (搜索短语之前没有- )和(?!-) (搜索短语后面没有- )和\b

代码语言:javascript
运行
复制
var mypattern = string.Format(@"(?<!-)\b{0}\b(?!-)", Regex.Escape(search));

场景#2 (带空格的word)

我正在寻找匹配的单词,它可以后面或前面的换行符或空格。

你需要像这样使用观景器:

代码语言:javascript
运行
复制
var mypattern = string.Format(@"(?<!\S){0}(?!\S)", Regex.Escape(search));

(?<!\S)查找(等于(?<=\s|^))在搜索单词之前需要一个空格或字符串的开始。(?!\S)负查找将需要在搜索单词之后使用空格符号。

Regex.Escape是一个预先警告步骤,以确保搜索单词中的所有特殊字符都被视为文字字符。

注意:如果您的“单词”不包含空格,则不需要正则表达式。使用

代码语言:javascript
运行
复制
var search = "this";
var sentence = "There is no gain in this world without pain";
var isPresent = sentence.Split().Contains(search);
Console.Write(isPresent); // = > True
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42949789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档