正则表达式在模式后提取文本

Regex to extract text after a pattern

我正在尝试从加载程序输出中提取错误消息,如下所示:

LOADER_ERROR : *** Failure The UserId, Password or Account is invalid., attempts:1
LOADER_ERROR : *** Time out waiting for a response.

预期输出:

Failure The UserId, Password or Account is invalid., attempts:1
Time out waiting for a response.

使用下面的正则表达式,我可以提取最后一次出现“:”字符后的所有内容。

  .+(\:\s.+)$

输出:

: *** Failure The UserId, Password or Account is invalid., attempts:1
: *** Time out waiting for a response.

如何去除输出开头的“:”或“***”?

感谢您的帮助

您将 :*** 包括在组中,因此它们将出现在输出中。 这应该有效:

.+\:\s\W+(.+)$

Check its demo here.

你要的数据好像在第一个冒号之后。您可以使用 negated character class [^

匹配第一个冒号之前的所有内容

请注意,您不必转义 \:

^[^:]+:\W*(.+)$

模式匹配:

  • ^ 字符串开头
  • [^:]+: 匹配除 : 之外的任何字符 1+ 次,然后匹配 :
  • \W* 可选择匹配非单词字符
  • (.+)在第1组中捕获,匹配任意字符1+次
  • $ 字符串结束

Regex demo


如果数据的格式总是这样,更严格的模式可以匹配 3 次星号,并以匹配单词字符开始捕获组。

^\w+\s+:\s+\*{3}\s+(\w.*)$

Regex demo