我讀過的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