嗨,这是我想要匹配的字符串。
mystr = "mykey/20161010/20161010"
到目前为止我的regex是这样的
re.match("mykey/([2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9])/[.]*", mystr)
如您所见,我使用的是一个Capture group。我想通过引用我已经创建的捕获组来替换[.]*。我该怎么做?
PS :我正在使用Python 2.7
更新1到目前为止,我已经尝试过了(我已经简化了一些示例),但似乎不起作用.
>>> mystr = "mykey/20/20"
>>> print re.match("mykey\/([2-9][0-9])\/[.]*", mystr)
<_sre.SRE_Match object at 0x7faf96ddf558>
>>> print re.match("mykey\/([2-9][0-9])\/.*", mystr)
<_sre.SRE_Match object at 0x7faf96ddf558>
>>> print re.match("mykey\/([2-9][0-9])\/\1", mystr)
None当我试图引用None时,我得到了Capture group。我是不是遗漏了什么?
更新2:终于开始工作了.希望这有助于寻找答案的人。添加额外的backslash(ie \)完成了这个任务
>>> import re
>>> mystr = "mykey/20160610/20160610"
>>> re.match("mykey/([2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9])/\\1", mystr)
<_sre.SRE_Match object at 0x7fe352145558>发布于 2016-08-11 15:35:17
mykey\/([2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9])\/\1使用\1 -捕获第一个捕获组(在本例中为[2-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9] )生成的精确匹配。
较短的版本将是
mykey\/([2-9]\d{3}[0-1]\d[0-3]\d)\/\1https://stackoverflow.com/questions/38900564
复制相似问题