You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言正则匹配捷克语字符,解决\w仅识别ASCII字符问题

问题原因

Go标准库regexp使用的RE2正则引擎中,默认\w仅匹配ASCII范围内的[a-zA-Z0-9_],无法识别捷克语的ž、á、ě等带变音符号的Unicode扩展字母,因此你的正则无法命中目标结果。

解决方案

使用RE2支持的Unicode属性类\p{L}替代\w,该类会匹配所有Unicode标准定义的字母,覆盖捷克语的全部字符范围。

修正后代码

r := regexp.MustCompile(`(?i)\by\p{L}+\b`)
text := "x yž z"
matches := r.FindAllString(text, -1)
fmt.Println(matches) // 输出 [yž]

补充说明

  • 如果你需要兼容原\w的数字、下划线匹配逻辑,可以将正则修改为(?i)\by[\p{L}0-9_]+\b
  • RE2默认的\b词边界是基于ASCII字符定义的,如果后续遇到Unicode字符位于单词首尾时边界识别异常,可以用前后非字符断言替代\b,示例规则:(?i)(?<![\p{L}0-9_])y\p{L}+(?![\p{L}0-9_])

内容的提问来源于stack exchange,提问作者Ondra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:18:02