Golang中的正则表达式


用法:


单一:


复合:


重复:


分组:


位置标记:


转义序列:


可以将“命名字符类”作为“字符类”的元素:


说明:


“字符类”取值如下(“字符类”包含“Perl类”、“ASCII类”、“Unicode类”):
x 单个字符
A-Z 字符范围(包含首尾字符)
\小写字母 Perl类
[:ASCII类名:] ASCII类
\p{Unicode脚本类名} Unicode类 (脚本类)
\pUnicode普通类名 Unicode类 (普通类)


“Perl 类”取值如下:


“ASCII 类”取值如下


“Unicode 类”取值如下—普通类:


“Unicode 类”取值如下—脚本类:


注意:

对于 [a-z] 这样的正则表达式,如果要在 [] 中匹配 - ,可以将 - 放在 [] 的开头或结尾,例如 [-a-z] 或 [a-z-]

可以在 [] 中使用转义字符:\f、\t、\n、\r、\v、\377、\xFF、\x{10FFFF}、\、^、$、.、*、+、?、{、}、(、)、[、]、|(具体含义见上面的说明)

如果在正则表达式中使用了分组,则在执行正则替换的时候,“替换内容”中可以使用

11、

1、{1}、

namename、

name、{name} 这样的“分组引用符”获取相应的分组内容。其中 $0 代表整个匹配项,$1 代表第 1 个分组,$2 代表第 2 个分组,……。

如果“分组引用符”是 $name 的形式,则在解析的时候,name 是取尽可能长的字符串,比如:$1x 相当于

1x{1x},而不是

1x,而不是{1}x,再比如:$10 相当于 ${10},而不是 ${1}0。

由于 $ 字符会被转义,所以要在“替换内容”中使用 $ 字符,可以用 $ 代替。

上面介绍的正则表达式语法是“Perl 语法”,除了“Perl 语法”外,Go 语言中还有另一种“POSIX 语法”,“POSIX 语法”除了不能使用“Perl 类”之外,其它都一样。


// 示例
func main() {
text := Hello 世界!123 Go.

}


完##