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

标签 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 这样的东西轻松地测试它. 有没有更好的办法?更简洁?性能?

最佳答案

您可以使用如下所示的范围来指定您希望匹配的所有字符。根据正则表达式引擎,以下其中一项应该有效:

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}]

关于用于在 Go 中测试拉丁字母的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49676977/

相关文章:

python - 如何从python中带有方括号的正则表达式输出中提取内容

javascript - php中RGBA值的正则表达式

java - 用于提取某些 <div> 标记的正则表达式

java - Matcher.replaceAll() 中的多个反向引用

go - golang 1.18 中逆变类型如何与泛型一起工作?

go - 如何匹配switch中的字符串

go - 在Golang中使用上下文超时停止运行功能

python - 如何匹配日期时间[ns]和日期时间[D]

python - 写入和读取 csv 文件 python

java - Swing 的 KeyStroke.getKeyStroke() 返回 UNKNOWN