Python 正则表达式竖条
我想在1个围棋中找到这些的所有匹配项:Python 正则表达式竖条,python,regex,Python,Regex,我想在1个围棋中找到这些的所有匹配项: http://somewebsite/usr/blah_blah http://somewebsite/ch/blah_blah_blah 我试过使用竖条,但没有成功 matches = re.findall('http://somewebsite/(usr|ch)/(.*?)', line, re.DOTALL) 我不想做两个单独的正则表达式,我想用竖条(或)在正则表达式上面加上一个 有什么建议吗?请帮忙。谢谢。如果您想匹配从http链接开始的整行
http://somewebsite/usr/blah_blah
http://somewebsite/ch/blah_blah_blah
我试过使用竖条,但没有成功
matches = re.findall('http://somewebsite/(usr|ch)/(.*?)', line, re.DOTALL)
我不想做两个单独的正则表达式,我想用竖条(或)在正则表达式上面加上一个
有什么建议吗?请帮忙。谢谢。如果您想匹配从
http
链接开始的整行内容,那么您必须做两件事
http
之前存在的空格matches = re.findall(r'\bhttp://somewebsite/(?:usr|ch)/.*', line, re.DOTALL)
如果只想提取在usr
或ch
之后存在的零件,则仅将捕获组应用于以下*
matches = re.findall(r'\bhttp://somewebsite/(?:usr|ch)/(.*)', line, re.DOTALL)
有几件事需要做。如前所述,删除空白,将其视为存在空白。接下来,您未能转义/字符。最后,问号字符告诉表达式停止查看某个点。尝试以下方法
matches = re.findall('http:\/\/somewebsite\/(usr|ch)\/.*', line, re.DOTALL)
最后,括号可用于验证码数据。如果你想要完整的地址,就不要写了。在python中,组0将具有完全匹配。java和大多数其他语言也是如此。这似乎是python,因此[x[0]for x in matches]将给出整个链接的列表
更多信息可从以下网址获得。为您提供一个更一般的示例;实际上,最合适的解决方案可能取决于一些尚未给出的信息:
test1 = "xxx http://somewebsite/usr/blah_blah/baff_blaff"
test2 = "yyy http://somewebsite/log/blah_blah_blah"
test3 = "zzzzhttp://somewebsite/ch/blah_blah_blah_blah/ ZZZ"
matches = re.findall(r'http://somewebsite/(?:usr|ch)/(\w*)', test1 + '\n' + test2 + '\n' + test3)
print(matches)
>>> ['blah_blah', 'blah_blah_blah_blah']
我认为您应该删除
regex
中http
之前的空白。。尝试it@helpme您的预期输出是什么?很抱歉出现了空白-太完美了。非常感谢。对不起,输入了空格。(*)和?:玩这个把戏。祝你有一个愉快的一天。@帮我,我建议你阅读