我读过的Unicode字符串here一个很好的解决方案,但我需要检查整个字符串是字母或空格或破折号,我想不出任何解。该示例没有按照我的要求工作。如何检查unicode字符串被字母,空格和破折号只有
name = u"Василий Соловьев-Седой"
r = re.compile(r'^([\s\-^\W\d_]+)$', re.U)
r.match(name) -> None
我读过的Unicode字符串here一个很好的解决方案,但我需要检查整个字符串是字母或空格或破折号,我想不出任何解。该示例没有按照我的要求工作。如何检查unicode字符串被字母,空格和破折号只有
name = u"Василий Соловьев-Седой"
r = re.compile(r'^([\s\-^\W\d_]+)$', re.U)
r.match(name) -> None
r = re.compile(r'^(?:[^\W\d_]|[\s-])+$', re.U)
[^\W\d_]
匹配任何字母(通过匹配任何字母数字字符除了数字和下划线)。
当然[\s-]
匹配空格和破折号。
你测试此字符串上U “ВасилийСоловьев-Седой”?结果没有结果。 – 2012-02-03 11:29:06
@Tim在研究这个,我发现你的其他答案http://stackoverflow.com/questions/1716609/how-to-match-cyrillic-characters-with-a-regular-expression你能解释的区别?是否re.U允许令牌\ W与\ p unicode令牌相同? – 2012-02-03 11:31:57
我的错误。我测试了错误字符串的正则表达式。 @Tim您的解决方案非常完美。谢谢。 – 2012-02-03 11:36:56
,如果你只想检查:
name = u"Василий Соловьев-Седой";
name = name.replace("-","").replace(" ","");
name.isalpha()
请准确定义你所说的“字母”,“空间”和“短线”的意思。 – 2012-02-03 11:18:09
字母 - 任何Unicode字母,空格 - 空间:),破折号 - “ - ” 符号 – 2012-02-03 11:19:47
我想他的意思[A-ZA-Z [UNICODE_LETTERS] - ] *,这里的问题是[UNICODE_LETTERS]吧? – Eregrith 2012-02-03 11:20:18