Python模式与特定于语言的字符匹配

时间:2018-06-15 09:31:06

标签: python regex pattern-matching language-specifications

从字符串列表中,我想提取所有单词并保存将它们扩展到新列表。我成功地使用以下形式的模式匹配来实现:

import re
p = re.compile('[a-z]+', re.IGNORECASE)
p.findall("02_Sektion_München_Gruppe_Süd")

不幸的是,该语言包含特定于语言的字符,因此给定示例形式的字符串会产生:

['Sektion', 'M', 'nchen', 'Gruppe', 'S', 'd']

我希望它能够产生:

['Sektion', 'München', 'Gruppe', 'Süd']

我很感激有关如何解决这个问题的建议。

1 个答案:

答案 0 :(得分:1)

您可以使用

import re
p = re.compile(r'[^\W\d_]+')
print(p.findall("02_Sektion_München_Gruppe_Süd"))
# => ['Sektion', 'München', 'Gruppe', 'Süd']

请参阅Python 3 demo

[^\W\d_]+模式匹配任何非字,数字和_的1个字符,即只有字母。

在Python 2.x中,您必须添加re.UNICODE标志才能使其与Unicode字母匹配:

p = re.compile(r'[^\W\d_]+', re.U)
相关问题