【问题标题】:Go regex, Negative Look Ahead alternative去正则表达式,负前瞻替代
【发布时间】:2017-01-25 14:31:52
【问题描述】:

我正在尝试使用 go 正则表达式实现正则表达式 (?<!\\{)\\[[a-zA-Z0-9_]+\\](?!\\})

匹配值类似于[ua][ua_enc],不匹配的应该是{[ua]}{[ua_enc]}

由于 Go 不支持 Negative lookahead,因此有什么替代表达方式?

【问题讨论】:

  • 解决方法取决于您最终想要实现的目标,替换或提取文本。您很可能使用(^|[^{])(\[\w+\])([^}]|$)

标签: regex go


【解决方案1】:

对此没有替代表达方式。使用普通的(?:[^{]|^)(...)(?:[^}]|$) 来捕获预期的匹配并断言前一个和下一个字符不是大括号将有点工作:您需要使用第一个捕获组而不是完整匹配,并且当有两个匹配项之间只有一个字符(例如[foo]_[bar])。实际上,最好的方法是使用 FindAllStringSubmatchIndex 并手动检查前一个和下一个字符,以确保它们不是正则表达式之外的大括号。

【讨论】:

    猜你喜欢
    • 2017-11-21
    • 1970-01-01
    • 2021-10-11
    • 2011-10-14
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多