Python正则表达式-忽略括号作为索引?
我目前编写了一个nooby正则表达式模式,其中涉及到过度使用“(“and”)”字符,但我将它们用于“or”运算符,例如(a | B | C)表示a或B或C 我需要在字符串中找到模式的每个匹配项。Python正则表达式-忽略括号作为索引?,python,regex,findall,Python,Regex,Findall,我目前编写了一个nooby正则表达式模式,其中涉及到过度使用“(“and”)”字符,但我将它们用于“or”运算符,例如(a | B | C)表示a或B或C 我需要在字符串中找到模式的每个匹配项。 尝试使用re.findall(pattern,text)方法是不好的,因为它将括号字符解释为索引符号(或任何正确的术语),因此生成的列表的每个元素都不是显示匹配文本节的字符串,而是元组(其中包含非常难看的模式匹配片段). 是否有一个参数可以传递给findall忽略作为索引的偏执? 或者我必须使用非常
尝试使用
re.findall(pattern,text)
方法是不好的,因为它将括号字符解释为索引符号(或任何正确的术语),因此生成的列表的每个元素都不是显示匹配文本节的字符串,而是元组(其中包含非常难看的模式匹配片段).
是否有一个参数可以传递给findall
忽略作为索引的偏执?或者我必须使用非常丑陋的组合
re.search
,和re.sub
(这是我能想到的唯一解决方案;找到re.search的索引,将匹配的文本部分添加到列表中,然后从原始字符串中删除它{使用丑陋的索引技巧},继续这样做直到没有更多的匹配。显然,这是可怕和不可取的)
谢谢 是,将
?:
添加到组以使其不捕获
import re
print re.findall('(.(foo))', "Xfoo") # [('Xfoo', 'foo')]
print re.findall('(.(?:foo))', "Xfoo") # ['Xfoo']
有关更多信息,请参阅
re.findall(r"(?:A|B|C)D", "BDE")
或
你能给我们看一下你想匹配/捕获什么和不匹配什么吗?也许你的regexp可以改进=)例如,
re.findall(r“(A | B | C)D”,“BDE”)
返回['B'],而不是括号内的['AD']?例如,“(?:A | B | C)”?@AntiEarth:是的,请参见示例威尔转义括号导致索引?例如:r“\(这在方括号中)\”一个无换位符的括号有一个特殊的含义(字符类中除外)。转义括号是表示需要实际括号字符的一种方式。
re.findall(r"((?:A|B|C)D)", "BDE")