首页 > 解决方案 > 正则表达式查找至少包含 3 个特定字符的所有单词

问题描述

我正在使用正则表达式解决一个问题,其中我需要找到一个句子中至少有 3 个特定字符的所有单词。假设我有以下数据:

定义一个模式,用于选择包含至少三倍字符a(包括其大写变体A)的所有单词。

测试的例句是:

阿纳斯塔西娅想切香蕉。

所以我所做的就是把我可能面临的所有可能的情况都整理了一遍:

在此处输入图像描述

到目前为止,我已经为第 4 种和第 6 种情况编写了一个使用管道的正则表达式,它适用于给定的文本。

"\\b(\\b[Aa]{1}[^Aa\\W\\s]*[Aa]{1}[^Aa]*[Aa]{1,}\\w*\\b)|(\\b[^Aa\\W]*[Aa]{1}[^Aa\\W]*[Aa]{1}[^Aa\\W]*[Aa]{1,}\\w*\\b)"

标签: regex

解决方案


这看起来相当令人费解。我认为从单词边界开始会更快更容易,然后重复包含(零个或多个非 A、非空格字符,后跟单个 A 字符)的组 3 次,然后是更多字符,直到你进入下一个空间:

\b(?:[^a ]*a){3}\w*

https://regex101.com/r/ZVxATc/2

(当然,请确保使用不区分大小写的标志,这样您就不必拼出类似的内容[aA]


推荐阅读