正则表达式测试Go中的拉丁字母

时间:2018-04-05 16:13:28

标签: regex go unicode

我正在尝试在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这样的东西轻松测试。 有没有更好的办法?更简洁?高性能?

1 个答案:

答案 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字符类中的特定字符:

See regex in use here

[^\P{Latin}\p{N}]