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

Geo*_*rge 5 python regex

我有一种情况,用户提交地址,我必须将用户输入替换为我的键.我可以使用没有后缀的地址加入.

覆盖的WAGON TRAIL

CHISHOLM TRAIL

LAKE TRAIL

CHESTNUT ST

林肯街

至:

覆盖的WAGON

CHISHOLM

板栗

林肯

但是,我无法理解如何编写此代码以仅替换最后一个单词.我明白了:

林肯

板栗

CHISHOLM

LAKEAIL

CHISHOLMAIL

覆盖的WAGONL

我试过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
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 6

使用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)
Run Code Online (Sandbox Code Playgroud)