python - 正则表达式 - 查找每隔 n(固定)字符出现在另一个字符串中的字符串
问题描述
我的问题标题可能不清楚,所以我将尝试用几个例子来解释以更好地解释
我才刚刚开始使用正则表达式,并且想用它来匹配每隔 n 个字符在另一个字符串中出现(隐藏)的字符串,例如:
我们想在这个字符串中找到世界“你好”:
"h..e..l..l..o......"
请注意它如何每 2 个字符重复一次
我能够为此创建一个简单的正则表达式规则,如下所示:
"h.{2}e.{2}l.{2}l.{2}o"
但是,这仅每 2 步有效,我希望它有任意数量的步骤(或至少说最多 5 个) - 这样它也可以匹配如下字符串:
"h...e...l...l...o"
我所做的尝试:
"h.{1,5}e.{1,5}l.{1,5}l.{1,5}o"
然而,这并不能修复所有范围内的数字,所以即使它没有出现在固定间隔中,这个字符串也会通过:
"h..e..l.l..o"
注意 2 个 l 之间的单个字符。我唯一的另一个想法是使用循环来表示迭代 1 到 5 并尝试所有这些作为单独的正则表达式语句,但是尝试在这里询问是否有任何巧妙的方法可以使用正则表达式来做到这一点会很有用: )
感谢您的任何回复
解决方案
我建议为此使用捕获组和反向引用:
h(\.{1,5})e\1l\1l\1o
(\.{1,5})
在第一个字母之后将匹配 1 到 5 个点并在第 1 组中h
捕获。之后我们在每个字符之间使用反向引用#1 \1
,以确保我们在所有字母之间匹配相同数量的点。
推荐阅读
- python - Python 多处理无法与fuzzywuzzy 一起按预期工作
- java - JTextField 中的异常处理
- google-analytics - UTM 参数如何到达 Google 分析网站
- c++ - 如何使用 SFINAE 停用我的“Pow(T)”的非集成版本?
- node.js - Nestjs websocket网关,如何从握手中解析签名cookie以进行保护授权?
- zeromq - 使用 ZeroMQ 推/拉模式从 MetaTrader 4 向 Python 后端发送很长的字符串
- java - Spring 国际化适用于 xml 配置,但不适用于 Java 配置
- regex - 如何在 AWS Lambda 上导入正则表达式
- matplotlib - 使用 add_artist 后,Pyplot 不会清除图形
- mysql - sql MariaDB 的问题 (1064)