我需要提取的文本有两种可能的格式为前面的文本。在Postgres函数中使用
在下面的两个示例中,所需结果均为Request successful
[May 08, 12:06AM] Request successful
[Apr 18, 12:10AM] Request req_wofjfiufmjs: Request successful
因此前缀可以是\[.*\]\s
或\[.*\]\sRequest\sreq_.*:\s
我试过了(?<=\s*\[.*\]\s|\s*\[.*\]\s*Request\s*req_.*:\s).*
这对第一种情况有效,但对第二种情况无效。
1条答案
按热度按时间jaxagkaj1#
对于第一个示例字符串,您得到了正确的结果,但对于第二个示例字符串,则没有得到正确的结果,因为对于
\s*\[.*\]\s
部分,左侧的Assert比|\s*\[.*\]\s*Request\s*req_.*:\s
部分更早为真您可以使用regexp_match和lookbehindAssert来编写它,以仅获得匹配,但在这种情况下,模式不会很好,因为它必须匹配第一部分,以确保右侧的第二部分没有匹配。
结果
也可以用空字符串替换匹配项。
\[.*\]\s
或\[.*\]\sRequest\sreq_.*:\s
的匹配可以通过一个可选部件来完成,而无需任何查找。结果