嗨,这是我要匹配的字符串
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
。我想通过引用我已创建的Capture组来替换[.]*
。我该怎么做?
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>
答案 0 :(得分:2)
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)\/\1