为了账号安全,请及时绑定邮箱和手机立即绑定

如何匹配多种语言

如何匹配多种语言

Go
当年话下 2023-05-08 14:29:43
我正在 golang 中编写一个正则表达式来捕获可能以不同语言出现的主题标签。例如,很明显一个是英语,但可能会有拉丁语或阿拉伯语用户尝试使用这些字符集创建主题标签。我知道 unicode 字符类名称,但是如何在不为每个字符生成正则表达式的情况下一次使用多个?示例代码:r, err := regexp.Compile(`\B(\#[[:ascii:]]+\b)[^?!;]*`)这将匹配"#hello #ذوق"并输出[]string{#hello, #ذوق}但不匹配"#ذوق"
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

我建议使用

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

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

请参阅Go 演示

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 := "#ذوق",输出为 #ذوق

查看完整回答
反对 回复 2023-05-08
  • 1 回答
  • 0 关注
  • 92 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信