gpt4 book ai didi

regex - 如何匹配多种语言

转载 作者:IT王子 更新时间:2023-10-29 01:37:55 28 4
gpt4 key购买 nike

我正在用 golang 编写一个正则表达式来捕获可能以不同语言出现的主题标签。例如,很明显一个是英语,但可能会有拉丁语或阿拉伯语用户尝试使用这些字符集创建主题标签。我知道 unicode 字符类名称,但如何在不为每个字符生成正则表达式的情况下一次使用多个字符类名称?

示例代码:

r, err := regexp.Compile(`\B(\#[[:ascii:]]+\b)[^?!;]*`)

这将匹配 "#hello #ذوق" 并输出 []string{#hello, #ذوق} 但不匹配 "#ذوق"

最佳答案

我建议使用

\B#[\p{L}\p{N}\p{M}_]+

其中 [\p{L}\p{N}\p{M}_] 大致是 Unicode 感知的 \w 模式。 \p{L} 匹配任何 Unicide 字母,\p{M} 匹配任何组合标记,\p{N} 匹配任何 Unicode数字。

参见 Go demo :

package main

import (
"fmt"
"regexp"
)

func main() {
text := "#hello #ذوق #citroën"
r := regexp.MustCompile(`\B#[\p{L}\p{N}\p{M}_]+`)
res := r.FindAllString(text, -1)
for _, element := range res {
fmt.Println(element)
}
}

输出:

#hello
#ذوق

使用 text := "#ذوق", the output is #ذوق

参见 regex demo .

关于regex - 如何匹配多种语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53150358/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com