我必须匹配如下所示的给定模式:Place *: *(.*)换句话说,我有一个标签、一些空格、一个冒号、一些空格和我想要的值。但是,我的数据中有一些地方的空格不是通常的20ASCII 字符,而是不间断的空格(unicode 字符\u00A0)。我怎样才能匹配它们?我想用Place\s*:\s*(.*)但它似乎不适用于\u00A0空白。这是 regexp 模块的错误还是想要的行为?如果是后者,我如何匹配所有类型的空格而不将它们全部列出?
1 回答
largeQ
TA贡献2039条经验 获得超7个赞
该RE2语法不限制\s到(≡ [\t\n\f\r ]),这似乎非常标准。
这可能是在使用正则表达式之前对字符串进行预处理更容易的情况。
例如,strings.Fields()将围绕空格拆分字符串,包括 unicode space runes。
// 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)
}
这将处理不可破坏的空间,因为unicode.IsSpace() 报告符文是否是由 Unicode 的 White Space 属性定义的空格字符;在 Latin-1 空间中,这是:
'\t', '\n', '\v', '\f', '\r', ' ', U+0085 (NEL), U+00A0 (NBSP).
- 1 回答
- 0 关注
- 165 浏览
添加回答
举报
0/150
提交
取消