首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串中间的竖线字符与python regex匹配

将字符串中间的竖线字符与python regex匹配
EN

Stack Overflow用户
提问于 2011-11-26 02:29:23
回答 2查看 12.1K关注 0票数 3

我尝试使用Python regex匹配字符串中的竖线字符,但似乎无法匹配。我已经把它归结为一个简化的版本。

假设我在一个字符串中寻找序列z|a。以下是一些可能的正则表达式和结果:

代码语言:javascript
复制
>>> 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')
>>> 

所以我可以匹配||az|,但是我找不到匹配z|a的方法。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-26 02:33:57

re.match()在字符串的开头查找匹配项。请改用re.search()

匹配的模式与空字符串匹配。例如,r'|‘是空字符串或空字符串,r'z|’是z或空字符串,'| a‘是空字符串或a。所有这些都将在任何字符串上匹配。

代码语言:javascript
复制
>>> 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(),以避免计算出需要多少个反斜杠才能对内容进行反转义。

票数 6
EN

Stack Overflow用户

发布于 2014-10-09 07:50:25

您可以使用以下方法来获取匹配字符串中间位置的re.match

代码语言:javascript
复制
myPattern = "how"

re.match('(.)*(%s)' %myPattern, 'Hello, how are you ?')*

.匹配正则表达式中的任何内容。基本上,您请求匹配以跳过匹配您的模式所需的任意数量的字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8273014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档