我是RE2语法正则表达式的新手,我想匹配特定字符串后的第一个单词。
例如:
java.lang.OutOfMemoryError: Java heap space
Error sending periodic event
java.lang.NullPointerException: Java heap space
Error sending periodic event
我想捕获java.lang.
之后的所有内容,以便获得OutOfMemoryError
,NullPointerException
错误。我知道在Python和PCRE中,我们可以使用正向后看来做到这一点,而正则表达式将为-(?<=java.lang.).*?(?=\s)
,但这不适用于RE2。
答案 0 :(得分:2)
您可以使用
java\.lang\.([^\s:]+)
详细信息
java\.lang\.
-一个java.lang.
子字符串([^\s:]+)
-捕获组1:除了空格和:
以外的一个或多个字符。 注意:如果您需要获取java.lang.
和:
之间的所有文本并加上空格,请使用java\.lang\.(.*?):\s
。
请参见regex demo和Go demo:
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])
}