Golang Regex - 从前瞻转换

时间:2017-02-13 12:20:58

标签: regex go

我在PHP和其他代码中使用了以下正则表达式。

/^(?:(?=[^ ]+\d)(?:[A-Z0-9]+))|(?:[A-Z0-9]+) +?(?=.*\d)(?:[A-Z0-9]+)?

Regular expression visualization

Debuggex Demo

事实证明,Go并不支持查看头,而且我对如何将其转换不知所措。

Debuggex链接有一些测试数据,我之前用它来验证代码。

1 个答案:

答案 0 :(得分:1)

首先,交替/^...的左侧不匹配任何内容,因为/在输入开始之前永远不会出现。

只留下(?:[A-Z0-9]+) +?(?=.*\d),可以表示为:

((?:[A-Z0-9]+) ).*\d.*

使用的术语" +?"" "的效果完全相同。

但请注意,这比原始输入消耗更多,这是不可避免的。您的原始匹配现在位于第1组。