簡體   English   中英

如何在Go中使用后置正則表達式?

[英]How to use lookbehind regexp in go?

我正在嘗試將紅寶石正則表達式轉換為go。

GROUP_CALL = /^(?<i1>[ \t]*)group\(?[ \t]*(?<grps>#{SYMBOLS})[ \t]*\)?[ \t]+do[ \t]*?\n(?<blk>.*?)\n^\k<i1>end[ \t]*$/m

我將其轉換為

groupCall := regexp.MustCompile("^(?P<i1>[ \\t]*)group\\(?[ \\t]*(?P<grps>(?::\\w+|:\"[^\"#]+\"|:'[^']+')([ \\t]*,[ \\t]*(?::\\w+|:\"[^\"#]+\"|:'[^']+'))*)[ \\t]*\\)?[ \\t]+do[ \\t]*?\\n(?P<blk>.*?)\\n^\\k<i1>end[ \\t]*$/s")

但是在運行時出現此錯誤

error parsing regexp: invalid escape sequence: \k

go docs中沒有提到\\kgo中沒有等效項嗎?

不支持lookbehinds,也沒有提及諸如@stribizhev之類的反向引用。

正則表達式2(RE2)語法參考:
https://github.com/google/re2/wiki/Syntax

接受的正則表達式的語法與Perl,Python和其他語言使用的常規語法相同。 更准確地說,它是RE2接受的語法,並在//code.google.com/p/re2/wiki/Syntax中進行了描述,但\\ C除外。 -GoLang文檔
參考: https : //golang.org/pkg/regexp/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM