【问题标题】:Negative lookbehind in go with endline match?与端线匹配进行负向后看?
【发布时间】:2020-09-29 13:49:53
【问题描述】:

我正在尝试匹配以

<3       // doesn't match
<34      // matches
<bla bla // matches

感谢您的帮助

【问题讨论】:

  • @torek 正确,这是一个巨大的痛苦。有什么方法可以模拟吗?
  • 查看其他答案——但一般来说,处理此问题的最佳方法是进行匹配,然后检查匹配。让正则表达式引擎快速完成繁重的工作,然后在事后清除误报。

标签: regex go


【解决方案1】:

如果您真的必须支持复杂的正则表达式而不必执行多次传递,您可以使用像 skybet/goback 这样的 Go 项目,它确实提供了扩展的正则表达式功能(与 re2 syntax 相比扩展了)

re := regexp.MustCompile(`(?<=a[0-9]{3,5})a`)
fmt.Println(re.MatchString("a12a"))     // false
fmt.Println(re.MatchString("a12345a"))  // true

但是,正如这个库中提到的:

该实现不保证线性处理时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2022-12-14
    • 2012-07-04
    • 1970-01-01
    相关资源
    最近更新 更多