【发布时间】:2014-06-02 02:45:29
【问题描述】:
我想选择[ ]括号内的内容
t="[abc/This is something] [testxyz] --include=*/ --include='some string/**' --exclude=*"
re.search('(\[[^\[\]]*\])\s*\1',t).groups()
为什么这没有返回?我也试过\\1,不行。当然(\[[^\[\]]*\])\s*(\[[^\[\]]*\]) 有效,但这不是应该使用\1 的地方吗?
预期结果是
['abc/This is something','testxyz']
【问题讨论】:
-
您应该使用原始字符串,方法是在您的字符串前面加上
r,如r'(\[[^\[\]]*\])\s*\1'。 StackOverflow 上有很多很多关于这个问题的问题。 -
除了应该使用原始字符串这一事实之外,您可能还想使用
re.findall()。不知道为什么在这里需要反向引用。 -
\1是组 1 匹配内容的反向引用,但不引用子模式。 -
反向引用的意思是“匹配被引用组匹配的确切文本”,而不是“匹配被引用组尝试匹配的相同类型的内容”。
标签: python regex string matching backreference