Python 正则表达式匹配并替换多个模式

Python 正则表达式匹配并替换多个模式,python,regex,Python,Regex,我遇到的情况是,用户提交了一个地址,我必须替换 用户输入到我的密钥。我可以使用一个没有后缀的地址加入这个 有盖货车径 奇肖姆小径 湖径 栗子街 林肯街 致: 有篷货车 奇肖姆 湖 栗子 林肯 然而,我无法理解如何编写这段代码来替换最后一个单词。 我得到: 林肯 栗子 奇肖姆 湖面 千丝万缕 有盖瓦贡 我试过regex verbose、re.sub和$ import re target = ''' LINCOLN STREET CHESTNUT ST CHISHOLM TR LAKE TRAIL

我遇到的情况是,用户提交了一个地址,我必须替换 用户输入到我的密钥。我可以使用一个没有后缀的地址加入这个

有盖货车径

奇肖姆小径

湖径

栗子街

林肯街

致:

有篷货车

奇肖姆

栗子

林肯

然而,我无法理解如何编写这段代码来替换最后一个单词。 我得到:

林肯

栗子

奇肖姆

湖面

千丝万缕

有盖瓦贡

我试过regex verbose、re.sub和$

import re
target = '''

LINCOLN STREET
CHESTNUT ST
CHISHOLM TR
LAKE TRAIL
CHISHOLM TRAIL
COVERED WAGON TRL

'''
rdict = {
' ST': '',
' STREET': '',
' TR': '',
' TRL': '',
}
robj = re.compile('|'.join(rdict.keys()))
re.sub(' TRL', '',target.rsplit(' ', 1)[0]), target
result = robj.sub(lambda m: rdict[m.group(0)], target)
print result

re.sub
$
一起使用

target = '''
LINCOLN STREET
CHESTNUT ST
CHISHOLM TR
LAKE TRAIL
CHISHOLM TRAIL
COVERED WAGON TRL
'''

import re
print re.sub('\s+(STREET|ST|TRAIL|TRL|TR)\s*$', '', target, flags=re.M)

如果确实以以下格式存储字符串:

target = '''

LINCOLN STREET
CHESTNUT ST
CHISHOLM TR
LAKE TRAIL
CHISHOLM TRAIL
COVERED WAGON TRL

'''
无需使用正则表达式:

>>> print '\n'.join([x.rsplit(None, 1)[0] for x in target.strip().split('\n')])
LINCOLN
CHESTNUT
CHISHOLM
LAKE
CHISHOLM
COVERED WAGON

谢谢成功了。