Python - 正则表达式西里尔语与拉丁语混合

时间:2017-03-30 11:24:35

标签: python regex cyrillic

我试图从混合输入中提取西里尔字母,但却无法按照我想要的方式进行分割。没有涉及数字或特殊字符。

input = "я я я я я w w w w w w\nф ф ф ф ф v v v v v v"
output = re.split("![а-я]\s*", input)
print(output)

我想摆脱wv字母,然后打印出俄文字母。使用我的代码,输入和输出是相同的,除了它们现在在列表中。

1 个答案:

答案 0 :(得分:2)

如果您需要从字符串中获取所有俄语字母,则需要使用(?i)[А-ЯЁ]正则表达式(不要忘记Ё,因为[А-Я]范围不包括它)并使用它与re.findall

在Python 3中测试:

>>> import re
>>> input = "я я я я я w w w w w w\nф ф ф ф ф v v v v v v"
>>> output = re.findall(r'(?i)[А-ЯЁ]', input)
>>> print(output)
['я', 'я', 'я', 'я', 'я', 'ф', 'ф', 'ф', 'ф', 'ф']

要提取乌克兰字母,您需要将ЇІЄҐ添加到字符类:

 output = re.findall(r"(?i)[А-ЯЁЇІЄҐ]", input)

撇号也被认为是乌克兰的一封信,不知道你是否想把它包含在模式中。