正则表达式中忽略重复限定符

2024-09-27 21:31:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我在构建一个带有重复限定符的regex时遇到了麻烦。在网上找不到一条建议。在

这里有一个字符串要匹配-

abc cde fgi

正则表达式是

^{pr2}$

下面是来自redemo.py公司名称:

the way how the regex matches the string

我从Perl得到了一个类似的输出:

^{3}$

我最好留下范围,原因,为什么我必须应用这个正则表达式。在

但问题是:我认为'{2}'限定符是匹配字符串的严格要求,因此解释器将返回5组成功匹配-

1: ''
2: 'abc'
3: ' '
4: 'fgi'
5: ''

出乎意料的是,解释器只返回了3个组,似乎“{2}”限定符被忽略了。在

如果我对regex重复限定符的理解是错误的,有人能评论一下吗?在

有人能建议一个工具来可视化regex是如何逐步解释的吗?在

谢谢


Tags: 字符串py名称公司原因解释器建议perl
1条回答
网友
1楼 · 发布于 2024-09-27 21:31:44

您已经在正则表达式中包含了{2},但是您没有将其包含在匹配组中。这意味着在计算是否存在匹配时计算repeat条件,但是在计算对匹配有贡献的组时不计算repeat条件。取而代之的是,你得到了一个重复的组匹配两次。要获得分配给一个组的内容的两个重复,请在该组的()中包含{}。在

请注意,您分配的组数永远不会超过输入中的()对。要获得组的单个重复,必须编写一个循环并重复匹配(或者在Perl中,通过其e标志在regex中包含代码)。在

相关问题 更多 >

    热门问题