不匹配字符串末尾的可选冒号与正则表达式

Sco*_*tie 1 regex perl

我正在尝试创建一个正则表达式,用于从字符串的开头到结尾提取所有字符串,除了字符串末尾的冒号(:).

字符串是:

ORA-06550: line 10, column 33:
ORA-20000: Schema "TEST" does not exist or insufficient privileges
PLS-00201: identifier 'A' must be declared:
Run Code Online (Sandbox Code Playgroud)

在Perl语言的一个正则表达式中,我想捕获以下字符串:

ORA-06550: line 10, column 33
ORA-20000: Schema "TEST" does not exist or insufficient privileges
PLS-00201: identifier 'A' must be declared
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有以下正则表达式(见在线)::

/^(.*)(?::)?$/gm
Run Code Online (Sandbox Code Playgroud)

我的问题是如何构造一个正则表达式,将从第一个和第三个字符串中删除冒号并同时捕获所有第二个字符串.

And*_*ter 5

您可以只删除字符串末尾的冒号,而不是尝试提取所有内容.

$str =~ s/:$//;
Run Code Online (Sandbox Code Playgroud)