如何检查Unicode字符串是否仅包含字母、空格和破折号

1 投票
2 回答
1069 浏览
提问于 2025-04-17 12:15

我在这里看到了一个关于unicode字符串的很棒的解决方案这里,但是我需要检查整个字符串,看看里面是不是只有字母、空格或者连字符(-),我想不出什么好的办法。这个例子并不能达到我想要的效果。

name = u"Василий Соловьев-Седой"
r = re.compile(r'^([\s\-^\W\d_]+)$', re.U)
r.match(name) -> None

2 个回答

0

如果你只是想检查一下:

name = u"Василий Соловьев-Седой";
name = name.replace("-","").replace(" ",""); 
name.isalpha()
4
r = re.compile(r'^(?:[^\W\d_]|[\s-])+$', re.U)

[^\W\d_] 这个表达式可以用来匹配任何字母,也就是说,它会匹配所有的字母字符,但不会匹配数字和下划线。

[\s-] 这个表达式自然是用来匹配空格和连字符(也就是短横线)。

撰写回答