2

我正在尝试为地址匹配不同的表达式:

示例:“398 W. 百老汇”

我想匹配 W. 或 E.(东)或 Pl。对于地方...等

使用这个正则表达式非常简单

(W.|West)例如。

然而,当我输入它时,python re 模块不匹配任何东西

>>> a
'398 W. Broadway'
>>> x = re.match('(W.|West)', a)
>>> x
>>> x == None
True
>>> 
4

2 回答 2

9

re.match匹配输入字符串的开头。

要匹配任何地方,请re.search改用。

>>> import re
>>> re.match('a', 'abc')
<_sre.SRE_Match object at 0x0000000001E18578>
>>> re.match('a', 'bac')
>>> re.search('a', 'bac')
<_sre.SRE_Match object at 0x0000000002654370>

search() vs. match()

Python 基于正则表达式提供了两种不同的原始操作: re.match() 仅在字符串的开头检查匹配,而 re.search() 在字符串中的任何位置检查匹配(这是 Perl 默认所做的) )。

于 2013-09-28T18:30:43.987 回答
3

.match()限制搜索从字符串的第一个字符开始。改为使用.search()。还要注意.匹配任何字符(换行符除外)。如果要匹配文字句点,请将其转义(\.而不是 plain .)。

于 2013-09-28T18:31:57.390 回答