我尝试使用Python regex匹配字符串中的竖线字符,但似乎无法匹配。我已经把它归结为一个简化的版本。
假设我在一个字符串中寻找序列z|a。以下是一些可能的正则表达式和结果:
>>> import re
>>> re.match(r'|', 'xyz|abc')
<_sre.SRE_Match object at 0x2d9a850>
>>> re.match(r'z|', 'xyz|abc')
<_sre.SRE_Match object at 0x2d9a780>
>>> re.match(r'|a', 'xyz|abc')
<_sre.SRE_Match object at 0x2d9a850>
>>> re.match(r'z|a', 'xyz|abc')
>>> re.match(r'z\|a', 'xyz|abc')
>>> re.match(r'z\\|a', 'xyz|abc')
>>> re.match(r'z\\\|a', 'xyz|abc')
>>> re.match(r'z[|]a', 'xyz|abc')
>>> 所以我可以匹配|,|a和z|,但是我找不到匹配z|a的方法。有什么想法吗?
发布于 2011-11-26 02:33:57
re.match()在字符串的开头查找匹配项。请改用re.search()。
匹配的模式与空字符串匹配。例如,r'|‘是空字符串或空字符串,r'z|’是z或空字符串,'| a‘是空字符串或a。所有这些都将在任何字符串上匹配。
>>> re.match('z\\|a', 'xyz|abc')
>>> re.search('z\\|a', 'xyz|abc')
<_sre.SRE_Match object at 0x02BF2BB8>
>>> re.search(r'z\|a', 'xyz|abc')
<_sre.SRE_Match object at 0x02BF2BF0>通常,您可以对需要包含在更复杂的正则表达式中间的文字字符串使用re.escape(),以避免计算出需要多少个反斜杠才能对内容进行反转义。
发布于 2014-10-09 07:50:25
您可以使用以下方法来获取匹配字符串中间位置的re.match。
myPattern = "how"
re.match('(.)*(%s)' %myPattern, 'Hello, how are you ?')*.匹配正则表达式中的任何内容。基本上,您请求匹配以跳过匹配您的模式所需的任意数量的字符。
https://stackoverflow.com/questions/8273014
复制相似问题