我正试图在日语地址中找到某些单词,以便我可以擦除它们。如果只有一个字符,正则表达式工作正常,但它们似乎找不到2个字符或更多的字符串:
import re
add = u"埼玉県川口市金山町12丁目1-104番地"
test = re.search(ur'["番地"|"丁目"]',add)
print test.group(0)
丁
我可以使用re.findall
代替re.search
,但它会将所有结果放入元组中,因此我必须解析元组。如果这是最好的方式,我可以忍受它,但我想我错过了什么。
在上面的示例中,我想用短划线交换“丁目”并删除尾随的“番地”,以便地址如下:
埼玉県川口市金山町12-1-104
答案 0 :(得分:5)
您在角色类(|
)中使用[....]
。它将匹配那里列出的任何字符;这不是你想要的。
指定没有字符类的模式。 (也没有"
)
>>> import re
>>> add = u"埼玉県川口市金山町12丁目1-104番地"
>>> test = re.search(ur'番地|丁目', add)
>>> test.group(0)
u'\u4e01\u76ee'
>>> print test.group(0)
丁目
要获得所需内容,请使用str.replace
(unicode.repalce
)和re.sub
。
>>> print re.sub(u'番地$', u'', add.replace(u'丁目', u'-'))
埼玉県川口市金山町12-1-104
$
仅用于匹配字符串的末尾。如果番地$
的位置无关紧要,则不需要正则表达式。 str.replace
就够了:
>>> print re.sub(u'番地$', u'', add.replace(u'丁目', u'-'))
埼玉県川口市金山町12-1-104