2016-12-15 43 views
1

所以我需要匹配由|包围的字符串。所以,模式应该简单地是r"\|([^\|]*)\|",对吧?然而:我的正则表达式在regex101上工作,但在python中不起作用?

>>> pattern = r"\|([^\|]*)\|" 
>>> re.match(pattern, "|test|") 
<_sre.SRE_Match object at 0x10341dd50> 
>>> re.match(pattern, " |test|") 
>>> re.match(pattern, "asdf|test|") 
>>> re.match(pattern, "asdf|test|1234") 
>>> re.match(pattern, "|test|1234") 
<_sre.SRE_Match object at 0x10341df30> 

这只是匹配上与|开头的字符串?它在regex101上工作得很好,如果它很重要,这是python 2.7。我可能只是在做一些愚蠢的事情,所以任何帮助将不胜感激。谢谢!

回答

2

re.match将要从头开始的字符串相匹配。在你的情况下,你只需要匹配的元素,对吗?在这种情况下,你可以使用类似re.searchre.findall,它会发现,匹配字符串中的任何地方:

>>> re.search(pattern, " |test|").group(0) 
'|test|' 

>>> re.findall(pattern, " |test|") 
['test'] 
2

的Python提供了两种不同的基本操作基于正则表达式:re.match()检查比赛只 在字符串的开头,而re.search()检查匹配字符串中的任何地方(这是Perl的默认完成 )。

Document

+0

谢谢,我知道它是什么对我而言是愚蠢的。 –

+0

这部分很混乱,所以他们为它编写一个文档。 –

相关问题