我正在尝试在Go中编写一个正则表达式来测试拉丁字母。
我知道\p{Latin}
与任何拉丁字母字符匹配,但它也匹配罗马数字之类的东西(例如“ⅻ”)。
这导致我\p{L}
匹配Unicode字母,但它匹配任何脚本,而不仅仅是拉丁文。
迄今为止,我能够获得最好的两个正则数据&&
:
latinRe := regexp.MustCompile(`\p{Latin}`)
letterRe := regexp.MustCompile(`\p{L}`)
if latinRe.Matches(testString) && letterRe.Matches(testString) {...}
我很高兴我无法使用regex101.com这样的东西轻松测试。 有没有更好的办法?更简洁?高性能?
答案 0 :(得分:3)
您可以使用以下范围指定想要匹配的所有字符。根据正则表达式引擎,以下之一应该可以工作:
See regex in use here:改编自this link
[A-Za-z\u00C0-\u00D6\u00D8-\u00f6\u00f8-\u00ff]
[A-Za-z\xC0-\xD6\xD8-\xf6\xf8-\xff]
另一种选择是否定Unicode字符类中的特定字符:
[^\P{Latin}\p{N}]