Python 3正则表达式 - 如何匹配所有unicode字母字符和空格?

时间:2016-01-22 22:41:55

标签: regex python-3.x unicode django-forms

我正在尝试在python 3 / django表单中验证地名。我希望与以下字符串匹配:Los AngelesCanada中国Россия。也就是说,字符串包含:

  • 空间
  • 字母字符(来自任何语言)
  • 没有数字
  • 没有特殊字符(标点,符号等)

我目前使用的模式是r'^[^\W\d]+$',如this stack overflow question中所述。但是它似乎只匹配模式r'^[a-zA-Z]+$。也就是说,РоссияLos Angeles中国不匹配,只有Canada

我的代码示例:

import re
re.search(r'^[^\W\d]+$', 'Россия')

什么都不返回。

1 个答案:

答案 0 :(得分:3)

您的示例适用于我,但会找到下划线而不是空格。这有效:

>>> re.search(r'^(?:[^\W\d_]| )+$', 'Los Angeles')
<_sre.SRE_Match object at 0x0000000003C612A0>
>>> re.search(r'^(?:[^\W\d_]| )+$', 'Россия')
<_sre.SRE_Match object at 0x0000000003A0D030>
>>> re.search(r'^(?:[^\W\d_]| )+$', 'Los_Angeles') # not found
>>> re.search(r'^(?:[^\W\d_]| )+$', '中国')
<_sre.SRE_Match object at 0x0000000003C612A0>