我需要匹配在Go代码中使用反向引用(例如\1)的正则表达式。
这并不是一件容易的事,因为在Go中,official regexp package使用了RE2 engine,它具有chosen to not support backreferences(以及其他一些鲜为人知的功能),因此可以保证线性时间执行,因此避免了regex denial-of-service attacks。 RE2不支持启用反向引用支持。
在我的代码中,没有被攻击者恶意利用的风险,并且我需要反向引用。
我该怎么办?
最佳答案
在这里回答我自己的问题,我使用了golang-pkg-pcre解决了这个问题,它使用了libpcre++,支持反向引用的perl正则表达式。该API为not the same。
关于regex - 如何在Go中将正则表达式与反向引用匹配?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23968992/