关于golang正则引擎的反向引用

wpsadmns · · 5269 次点击
《精通正则表达式》里说到反向引用包括在正则里引用捕获和在正则外(替换字符串)引用捕获, 目前golang是只提供了正则外的反向引用没提供正则内的反向引用?如果有的话告诉我语法。 顺道一提,只有Python正则外引用捕获是用\1,Java、Perl、Go等一般语言都是用$1。 ```golang r := regexp.MustCompile(`(.)2\1`) s := r.ReplaceAllString(`b2b`, `s\1$1`) fmt.Println(s) 编译报错 panic: regexp: Compile(`(.)2\1`): error parsing regexp: invalid escape sequence: `\1` ``` Java(仅支持\1不支持\g{1})、Python、Perl都支持的 https://docs.python.org/zh-cn/3/library/re.html#contents-of-module-re https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/regex/Pattern.html
#9
更多评论
polaris
社区,需要你我一同完善!
谁说不支持反向引用?还众所周知? package main import ( "regexp" "fmt" ) func main() { re := regexp.MustCompile("([0-9]+)年([0-9]+)月([0-9]+)日") fmt.Println(re.ReplaceAllString("2013年9月30日", "$1-$2-$3")) } 输出结果: 2013-9-30 注:一般的语言用的是 \1 这种形式反向引用
#1
。。。哥们,你能先了解一下什么叫反向引用嘛~
#2