python - 有没有办法在进行正则表达式匹配时使用出现次数的范围?

原文 标签 python regex

给定一个字符串 aaabbb有没有一种方法可以编写正则表达式来查找子字符串的数量,例如 ab、aabb、aaabbb。

我是通过构建一个正则表达式来实现的 [a]{m}[b]{m}以及对一系列值的迭代。但我想知道是否有办法一次性完成。

最佳答案

正如评论中所说,^(?:a(?=a*(\1?+b)))+\1$允许使用广泛传播的正则表达式功能来匹配这种平衡的构造。

Demo

完整说明 here .

话虽如此,如果您想列出与平衡结构匹配的所有重叠子字符串,您可以使用 (?=((?:a(?=a*(\2?+b)))+\2)) :

(?=                         # Using a lookahead allows to restart matching even if a match has already been found, as a lookaround doesn't "consume" its content.
  (                         # Using a capturing group allows to retrieve the match.
    (?:a(?=a*(\2?+b)))+\2)  # As an outer capturing group has been defined, thus numbered 1, we rewrite the inner part using the proper group 2.
  )
)

Demo

关于python - 有没有办法在进行正则表达式匹配时使用出现次数的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48657526/

相关文章:

python - 使用Tensorflow的目标阵列形状与预期输出不同

python - 如何自动化我的 Python 代码?

java - 正则表达式Java以特定的开始,然后除了一些字符

javascript - 在javascript中提取正则表达式组不起作用

java - 从字符串中删除特定unicode范围的字符

python - 如何在Python中获取第一个大写字母,然后再获取每个不跟另一个大写字母的字母?

python - 添加swig pythoncode以在Python对象上设置thisown标志

python - 如何从分组数据创建数据框

python - 如何在多行模式之间读取文件并提取数据?

regex - Emacs:用每个匹配提示替换正则表达式