Python正则表达式扩展

时间:2014-10-30 15:21:32

标签: python regex

我对正则表达式非常糟糕,并坚持为正则表达式生成所有可能的组合。

当正则表达式为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?)(\])(.*)

2 个答案:

答案 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())

上面的正则表达式将匹配您希望的模板!