python正则表达式匹配确切的单词

时间:2013-09-28 18:29:43

标签: python regex

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

示例:'398 W. Broadway'

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

使用此正则表达式非常简单

例如

(W.|West)

然而,当我输入

时,python re模块与任何东西都不匹配
>>> a
'398 W. Broadway'
>>> x = re.match('(W.|West)', a)
>>> x
>>> x == None
True
>>> 

3 个答案:

答案 0 :(得分: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()检查匹配中的任何位置   string(这是Perl默认执行的操作)。

答案 1 :(得分:3)

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

答案 2 :(得分:-1)

withWithout = raw_input("Enter with or without: \n")
if re.match('with|without', withWithout):
    print "You enterd :", withWithout, "So I will DO!", withWithout
elif not re.match('with|without', withWithout):
    print " Error! you can only enter with or without ! "    
sys.exit()