我在使用golang正则表达式的时候遇到了一个小问题。
当我使用\b
来匹配单词边界时,对于类似这样的latein字符似乎无法生效。
我本以为é
应该被视为普通字符,但实际上它被视为边界符之一。
package main
import (
"fmt"
"regexp"
)
func main() {
r, _ := regexp.Compile(`\b(vis)\b`)
fmt.Println(r.MatchString("re vis e"))
fmt.Println(r.MatchString("revise"))
fmt.Println(r.MatchString("révisé"))
}
结果为:
true
false
true
请给我一些建议,如何处理
r.MatchString("révisé")
返回false
?谢谢。
\b
单词边界只支持 ASCII -- 文档中说在 ASCII 单词边界(\w 在一侧,\W、\A 或 \z 在另一侧)
。唯一的选择可能是在正则表达式中显式匹配您认为是单词边界的字符(空格、换行符、句号、字符串结尾等)。 - Herman Schaaf