我正在尝试使用go regex实现正则表达式(?<!\\{)\\[[a-zA-Z0-9_]+\\](?!\\})
。
匹配值将与[ua]
和[ua_enc]
相匹配,不匹配应为{[ua]}
和{[ua_enc]}
由于Go不支持否定前瞻,这可能是替代表达式吗?
答案 0 :(得分:2)
没有替代表达方式。使用普通(?:[^{]|^)(...)(?:[^}]|$)
来捕获预期的匹配并断言上一个和下一个字符不是大括号将是一种工作:您将需要使用第一个捕获组而不是完全匹配,并且它将失败时两个匹配之间只有一个字符(例如[foo]_[bar]
)。实际上,最好的方法是使用FindAllStringSubmatchIndex
并手动检查上一个和下一个字符,以确保它们不是正则表达式之外的大括号。