Ant*_*rth 6 python regex findall
我目前写了一个nooby正则表达式模式,涉及过度使用"("和")"字符,但我将它们用于'或'运算符,例如(A | B | C)表示A或B或C.
我需要在字符串中找到模式的每个匹配项.
尝试使用该re.findall(pattern, text)方法并不好,因为它将括号字符解释为索引符号(或任何正确的术语),因此生成的List的每个元素都不是显示匹配文本部分的字符串,而是一个元组(其中包含非常难看的模式匹配片段).
我可以传递一个参数findall来忽略paranthesis作为索引吗?
或者我将不得不使用非常丑陋的组合re.search,和re.sub
(这是我能想到的唯一解决方案;找到re.search的索引,将匹配的文本部分添加到List中,然后将其从原始字符串中移除{使用丑陋的索引技巧},继续这一直到不再有很明显,这是可怕的和不可取的).
谢谢!
geo*_*org 11
是的,添加?:到组以使其不可捕获.
import re
print re.findall('(.(foo))', "Xfoo") # [('Xfoo', 'foo')]
print re.findall('(.(?:foo))', "Xfoo") # ['Xfoo']
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅re语法.