使用 RE2 在 space 之前的字符串之后匹配正则表达式
Regex to match after string before space using RE2
我是 RE2 语法正则表达式的新手,我想匹配特定字符串之后的第一个单词。
例如:
java.lang.OutOfMemoryError: Java 堆 space
发送定期事件时出错
java.lang.NullPointerException: Java 堆 space
发送定期事件时出错
我想捕获 java.lang.
之后的任何内容,这样我就可以得到 OutOfMemoryError
、NullPointerException
错误。我知道在 Python 和 PCRE 中我们可以使用正后视来做到这一点,正则表达式将是 - (?<=java.lang.).*?(?=\s)
,但这不适用于 RE2。
您可以使用
java\.lang\.([^\s:]+)
详情
java\.lang\.
- java.lang.
子串
([^\s:]+)
- 捕获组 1:除空格和 :
. 之外的一个或多个字符
注意:如果您需要获取 java.lang.
和 :
之间的所有文本后跟空格,请使用 java\.lang\.(.*?):\s
.
参见 regex demo and the 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])
}
我是 RE2 语法正则表达式的新手,我想匹配特定字符串之后的第一个单词。
例如:
java.lang.OutOfMemoryError: Java 堆 space
发送定期事件时出错
java.lang.NullPointerException: Java 堆 space
发送定期事件时出错
我想捕获 java.lang.
之后的任何内容,这样我就可以得到 OutOfMemoryError
、NullPointerException
错误。我知道在 Python 和 PCRE 中我们可以使用正后视来做到这一点,正则表达式将是 - (?<=java.lang.).*?(?=\s)
,但这不适用于 RE2。
您可以使用
java\.lang\.([^\s:]+)
详情
java\.lang\.
-java.lang.
子串([^\s:]+)
- 捕获组 1:除空格和:
. 之外的一个或多个字符
注意:如果您需要获取 java.lang.
和 :
之间的所有文本后跟空格,请使用 java\.lang\.(.*?):\s
.
参见 regex demo and the 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])
}