我对正则表达式非常糟糕,并坚持为正则表达式生成所有可能的组合。
当正则表达式为abc-defghi00[1-24,2]-[1-20,23].walmart.com
时,它应生成所有可能的组合。
大括号之前的文本可以是任何内容,大括号内的模式是可选的。
需要所有的python专家来帮助我处理代码。
示例输出 这是预期的输出:
abc-defghi001-1.walmart.com
.........
abc-defghi001-20.walmart.com
abc-defghi001-23.walmart.com
..............
abc-defghi002-1.walmart.com
Repeat this from 1-24 and 2.
正则表达式尝试
([a-z]+)(-)([a-z]+)(\[)(\d)(-)(\d+)(,?)(\d?)(\])(-)(\[)(\d)(-)(\d+)(,?)(\d?)(\])(.*)
答案 0 :(得分:1)
让我们说我们希望与abc-defghi001-1.walmart.com
匹配。现在,如果我们编写以下正则表达式,它就可以完成工作。
s = 'abc-defghi001-1.walmart.com'
re.match ('.*[1-24]-[1-20|23]\.walmart\.com',s)
和输出:
<_sre.SRE_Match object at 0x029462C0>
所以,它找到了。如果您想在第一个括号中匹配27,则只需将其替换为[1-24|27]
,或者如果您想匹配0到29,则只需将其替换为[1-29]
即可。当然,你知道在所有上述命令之前你必须写import re
。
Edit1:据我所知,您希望生成正则表达式的所有实例并将它们存储在列表中。
使用exrex
python库来执行此操作。您可以找到有关它的更多信息here。然后,你必须限制你使用的正则表达式。
答案 1 :(得分:0)
import re
s = 'abc-defghi001-1.walmart.com'
obj=re.match(r'^\w{3}-\w{6}00(1|2)-([1-20]|23)\.walmart\.com$',s)
print(obj.group())
上面的正则表达式将匹配您希望的模板!