Fab*_*ien 1 regex unicode whitespace go
我必须匹配给定的模式,如下所示:
Place *: *(.*)
Run Code Online (Sandbox Code Playgroud)
换句话说,我有一个标签,一些空格,冒号,一些空格和我想要的值.
但是,我的数据中有一些空格不是通常的20ASCII字符,而是非空格(unicode字符\u00A0).我怎么能匹配它们?我想过要用
Place\s*:\s*(.*)
Run Code Online (Sandbox Code Playgroud)
但它似乎不适用于\u00A0空白.这是regexp模块的错误还是这个想要的行为?如果是后者,如何在不列出所有空格的情况下匹配所有类型的空间?
该RE2语法不限制\s到(? [\t\n\f\r ]),这似乎非常标准.
这可能是在使用正则表达式之前预处理字符串更容易的情况.
例如,strings.Fields()将字符串分割为空格,包括unicode空间符文.
// Fields splits the string s around each instance of one or more consecutive white space
// characters, as defined by unicode.IsSpace, returning an array of substrings of s or an
// empty list if s contains only white space.
func Fields(s string) []string {
return FieldsFunc(s, unicode.IsSpace)
}
Run Code Online (Sandbox Code Playgroud)
这会照顾不可破坏的空间,因为unicode.IsSpace() 报告符文是否是由Unicode的White Space属性定义的空格字符; 在Latin-1空间中,这是:
'\t', '\n', '\v', '\f', '\r', ' ', U+0085 (NEL), U+00A0 (NBSP).
Run Code Online (Sandbox Code Playgroud)