python问题中典型的绵羊计数正则表达式

2024-04-26 02:44:16 发布

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

晚上,在祷告后,我通常数羊来帮助我入睡。 我需要一个正则表达式来帮助我正确计数。 我希望下面的字符串匹配

0
1sheep
2sheepsheep
3sheepsheepsheep

等等。在

这个的正则表达式是什么?在

'(\d+)(sheep){\1}'if{}这样的东西可以做我想要它做的事情

如果我成对地数数我的羊(1sheepsheep2sheepsheepsheepsheep),那么正则表达式是什么呢?在


Tags: 字符串if事情计数sheep数数
3条回答

Python的正则表达式引擎不支持将匹配的子表达式解析为重复计数,我认为也不应该使用RegExp来完成这项工作。在

最好的办法是结合RegExp匹配和代码检查:

rx = re.compile(r'^(\d+)((?:sheep)*)$')
m = rx.match(theString)
if m and len(m.group(2)) == 5 * int(m.group(1)):
   print ("Matched")

这不是您应该单独使用正则表达式来完成的;您应该首先匹配字符串开头的数字,然后动态生成一个正则表达式来匹配其余部分。有关代码示例,请参阅其他答案。在

我相信使用Perl regexes(搜索(?PARNO))是可行的。这可能就是我不喜欢Perl的原因。在

可以使用正则表达式提取数字,然后在重复运算符上使用该数字编译第二个正则表达式:

import re
theString = '2sheepsheep'

rx = re.compile(r'^(\d+)(sheep)*$')
m = rx.match(theString)

rx = re.compile(r'^(\d+)(sheep){' + m.group(1) + '}$')
# If you count in pairs, you can just change that to:
rx = re.compile(r'^(\d+)(sheepsheep){' + m.group(1) + '}$')

相关问题 更多 >