[英]regex match and replace multiple patterns
我有一种情况,用户提交地址,我必须将用户输入替换为我的键。 我可以使用没有后缀的地址加入。
覆盖的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
使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.