regex - 正则表达式查找至少包含 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)"
- 我做对了吗?
- 它有效率吗?
- 正则表达式中是否有允许我计算特定字符的概念?
- 我在“自动机理论”中了解到,NFA/DFA 受到限制,无法跟踪计数。那么我必须使用先进的图灵机吗?
解决方案
这看起来相当令人费解。我认为从单词边界开始会更快更容易,然后重复包含(零个或多个非 A、非空格字符,后跟单个 A 字符)的组 3 次,然后是更多字符,直到你进入下一个空间:
\b(?:[^a ]*a){3}\w*
https://regex101.com/r/ZVxATc/2
(当然,请确保使用不区分大小写的标志,这样您就不必拼出类似的内容[aA]
)
推荐阅读
- mysql - 自定义过滤器并将过滤后的数据导出到 Excel 工作表中,在 codeigniter 中不起作用
- html - 无法在 Django 中设置背景图像
- python - 按数组范围进行 Numpy 索引
- javascript - WebSocket 中的乒乓机制
- android - Qt QML Camera部署后显示白屏
- windows - 批处理文件以将每个名称的文件排列到相关文件夹中
- python - 各种性能指标中的sample_weight参数是什么
- node.js - 使用 Nodejs 驱动程序更新 mongodb 中的数组对象
- postgresql - 如何实现 PostgreSQL 数据库的架构迁移
- python - 为什么我用 git 或 wheel 文件安装的 Polyglot 不起作用?