正则表达式:匹配包含某个单词的所有单词

Posted

技术标签:

【中文标题】正则表达式:匹配包含某个单词的所有单词【英文标题】:Regex: Match all the words that contains some word 【发布时间】:2017-07-21 00:17:13 【问题描述】:

我想匹配所有包含单词“oana”的单词。我在一些单词的开头、中间和结尾都加上了大写字母“OANA”。

blah OANAmama blah aOANAtata aOANAt msmsmsOANAasfasfa mOANAmsmf OANAtata OANA3 oanTy

反正我做了一个正则表达式,但不是很好,因为它不会选择所有包含“oana”的单词

\b\w+(oana)\w+\b

谁能给我另一个解决方案?

【问题讨论】:

【参考方案1】:

您需要使用不区分大小写的标志并将+ 替换为*

/\b\w*oana\w*\b/i

参见regex demo(可能会使用也可能不会使用全局修饰符,具体取决于正则表达式引擎)。在某些正则表达式引擎中,不区分大小写的修饰符可以作为内联选项传递 - (?i)\b\w*oana\w*\b

这里,

\b - 单词边界 \w* - 0+ 个单词字符 oana - 单词中所需的字符字符串 \w* - 0+ 个单词字符 \b - 单词边界

【讨论】:

就好了。非常感谢 Wiktor!

以上是关于正则表达式:匹配包含某个单词的所有单词的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 - 匹配整个字符串,除非 [重复]

正则表达式模式匹配第一个和最后一个标记之间的单词,第一个单词是常量

如果正则表达式不包含特定单词,如何匹配它?

正则表达式:\B 匹配不是单词开头或结束的位置

正则表达式匹配用括号括起来并用管道分隔的所有单词

捕获包含模式正则表达式的每个单词