У меня есть небольшая проблема с регулярным выражением golang. кажется, что опция ограничения \b
не работает, когда я помещаю латинские символы, подобные этому.
Я ожидал, что é
следует рассматривать как обычный символ... но он рассматривается как один из ограничивающих вардов.
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 — в документах указаноat ASCII word boundary (\w on one side and \W, \A, or \z on the other)
. Единственным вариантом, вероятно, является явное сопоставление символов, которые вы считаете границей слова в регулярном выражении (пробелы, новые строки, точки, конец строки и т. д.) - person Herman Schaaf   schedule 04.02.2016