包含平假名和片假名unicode字符的示例字符串:
myString = u"Eliminate ひらがな non-alphabetic カタカナ characters"
符合两个范围的模式,根据: http://www.rikai.com/library/kanjitables/kanji_codes.unicode.shtml
myPattern = u"[\u3041-\u309f]*|[\u30a0-\u30ff]*"
简单的Python正则表达式替换函数
import re
print re.sub(myPattern, "", myString)
返回:
Eliminate non-alphabetic カタカナ characters
我能让它发挥作用的唯一方法就是我分别使用两个范围,一个接一个。什么阻止此RegEx简单地选择| -pipe的两侧?
答案 0 :(得分:5)
您需要将范围组合成一个字符类,否则它将匹配一个或另一个范围,而不是两者:
myPattern = u"[\u3041-\u309f\u30a0-\u30ff]*"
演示:
>>> myPattern = u"[\u3041-\u309f\u30a0-\u30ff]*"
>>> print re.sub(myPattern, "", u"Eliminate ひらがな non-alphabetic カタカナ characters")
Eliminate non-alphabetic characters
答案 1 :(得分:0)
>>> myPattern = u"[\u3041-\u309f]|[\u30a0-\u30ff]"
>>> print re.sub(myPattern, "", myString)
Eliminate non-alphabetic characters
>>>
编辑您可以将两个字符类与OR运算符组合在一起