【发布时间】:2015-07-30 02:17:52
【问题描述】:
由于我对re2 有点陌生,我正试图弄清楚如何在Go 中使用正向预测(?=regex),如JS、C++ 或任何PCRE 样式。
以下是我正在寻找的一些示例。
JS:
'foo bar baz'.match(/^[\s\S]+?(?=baz|$)/);
Python:
re.match('^[\s\S]+?(?=baz|$)', 'foo bar baz')
- 注意:两个例子都匹配
'foo bar '
非常感谢。
【问题讨论】:
-
查看github.com/google/re2/wiki/Syntax - 在文本匹配
re(不支持)之前有一行说“(?=re)”。这看起来不太好。此外,它说“替代回溯正则表达式引擎” - 暗示他们会放弃一些功能。 -
我想这是一种答案,所以我添加了一个。
-
@Kobi 现在有dlclark/regexp2 可用
-
@Andy - 谢谢!所以 Go 有
regexp(即 re2)和regexp2(不是 re2)。这是一个糟糕的库名称选择——我认为这比 Python 的re和regex库:P更令人困惑。看起来它是从带有balancing groups 的.Net 移植的,它们是my favorite regex feature - 我会看看。