我有一个pcre正则表达式字符串,我试图转换为re2 . 这是pcre和要匹配的字符串 .
\%(?!$|\W)
它只匹配%,如果有!或非字char没有
%252525253E%252553Csvg%25252525252525252Fonload%252525252525252525252525252525252525252525252525252525253Dalert(document.domain的)%252525252
结果: % % % %
我最好的转换是这样的:
\%[^!$|\W]
结果: %2 %3 %3 %2 %3 %3
然而,这与第一个数字匹配,我不希望这样,我希望它的行为与pcre版本完全相同 . 这是我测试的地方:
regex-golang DOT appspot DOT com / assets / html / index.html
regex101 DOT com
任何帮助将不胜感激 .
1 回答
你可以尝试这样的事情:
由于golang没有负前瞻(至少我认为如此),你可以使用非捕获组 . 所以在这个例子中你需要使用第一个捕获组(egmatches [1]而不匹配[0] )https://regex101.com/r/THTWwB/2
EDIT: golang中更详细的示例可帮助您了解上述正则表达式如下:
在此示例中,您可以使用第一个捕获组来访问% . 例如,m [0] [0]将是%2但m [0] [1]将只是%(第一个捕获组) . 注意第一个索引是匹配的索引 . 第一个匹配的索引存储在m [0] []中,第二个匹配在m [1] []等中