使用RE2在字符串后空格前进行Regex匹配



我是RE2语法正则表达式的新手,我想匹配特定字符串后面的第一个单词。

例如:

java.lang.OutOfMemoryError: Java heap space Error sending periodic event java.lang.NullPointerException: Java heap space Error sending periodic event

我想捕获java.lang.之后的任何内容,这样我就可以获得OutOfMemoryErrorNullPointerException错误。我知道在Python和PCRE中,我们可以使用正向查找实现这一点,regex将是-(?<=java.lang.).*?(?=s),但这对RE2不起作用。

您可以使用

java.lang.([^s:]+)

详细信息

  • java.lang.-一个java.lang.子串
  • ([^s:]+)-捕获组1:除空白和:之外的一个或多个字符

注意:如果需要获取java.lang.:之间的所有文本,然后加上空白,请使用java.lang.(.*?):s

查看regex演示和Go演示:

package main
import (
"fmt"
"regexp"
)
func main() {
regex := regexp.MustCompile(`java.lang.([^s:]+)`)
result := regex.FindStringSubmatch("java.lang.OutOfMemoryError: Java heap space Error sending periodic event")
fmt.Printf("%q", result[1])
}

最新更新