REGEX段落中的单词,但不包含包含该单词的单词,除非它是复数

时间:2010-10-06 12:22:09

标签: regex

我正在强调文本正文中的文字。

如果我正则表达“端口”,“葡萄牙语”这个词也会突出显示,但我需要突出显示“端口”。

有什么想法吗?我讨厌正则表达式。

由于

2 个答案:

答案 0 :(得分:3)

尝试这样的事情:

\bports?\b

?表示s字符是可选的。两端的\b与字边界匹配。

更一般地说,您可以执行以下操作,以允许以sesies结尾的字词:

\bwhatever(?:s|es|ies)?\b

这非常粗糙,你可能会得到误报否定。如果你想要更复杂的东西,那么我想你需要查看一个合适的全文搜索引擎。

答案 1 :(得分:2)

最基本的答案是:

\bPort(s?)\b

\b标记该单词的开头和结尾。这只匹配'端口'和'端口'。如果您需要不区分大小写的匹配,请在Perl中使用类似/i修饰符的内容:

m/\bport(s?)\b/i

或者,如果您只想匹配“端口”,“端口”,“端口”和“端口”,请尝试

\b(P|p)ort(s?)\b