在python正则表达式中,如果匹配任何一个正则表达式值,我将如何匹配大量文本和标志...我已尝试使用“|”或者我已经尝试制作一个正则表达式列表..既不适合我...这里有一个例子,我正在尝试用或...
我认为我的“或”被注释掉了
patterns=re.compile(r'[\btext String1\b] | [\bText String2\b]')
if(patterns.search(MyTextFile)):
print ("YAY one of your text patterns is in this file")
上面的代码总是说它匹配,无论字符串是否出现,如果我改变它,我在第一个正则表达式上得到匹配但从不检查第二个....我相信这是因为“Raw”正在评论我或我的陈述,但我怎么能绕过这个?
我也尝试通过取出“Raw”语句并在我的\ b上放置双斜线来逃避,但这也无效:(
patterns=re.compile(\\btext String1\\b | \\bText String2\\b)
if(patterns.search(MyTextFile)):
print ("YAY one of your text patterns is in this file")
然后我尝试用or做两个单独的原始语句,并且解释器抱怨不支持的str opperands ......
patterns=re.compile(r'\btext String1\b' | r'\bText String2\b')
if(patterns.search(MyTextFile)):
print ("YAY one of your text patterns is in this file")
答案 0 :(得分:7)
patterns=re.compile(r'(\btext String1\b)|(\bText String2\b)')
您想要一个组(可选择捕获),而不是一个字符类。从技术上讲,您不需要这里的小组:
patterns=re.compile(r'\btext String1\b|\bText String2\b')
也可以(没有任何捕获)。
你拥有它的方式,它检查了第一个方括号之间的一个字符,或第二个方括号之间的一个字符。您可能会发现regex tutorial有帮助。
应该清楚“不支持的str操作数”错误来自何处。你不能OR字符串,你必须记住|在参数甚至到达compile
之前处理。
答案 1 :(得分:0)
这部分[\ btext String1 \ b]表示存在“文字字符串1”或“文字字符串1”中的字母之一。所以我认为只匹配空行。
答案 2 :(得分:0)
在RE模式中,方括号[ ]
表示“字符类”(取决于它们内部的内容,“这些字符中的任何一个”或“除了其中一个之外的任何字符”,后者表示为插入符^
作为开头[
后的第一个字符。这就是你所表达的内容,它与你想要的东西完全没关系 - 只需删除括号,你应该没事; - )。