gpt4 book ai didi

regex - 多行组和正则表达式搜索

转载 作者:行者123 更新时间:2023-12-02 05:39:56 26 4
gpt4 key购买 nike

好的,正则表达式向导。我希望能够搜索我的日志文件并找到其中包含“错误”一词的任何 session ,然后返回整个 session 日志条目。

我知道我可以用字符串/数组做到这一点,但我想学习如何用 Regex 做到这一点,但问题来了。如果我决定用 Regex 做这件事,我会做 have one or two problems ? ;o)

这是日志:

PS:我使用的是 perl Regex 引擎。

注意:我认为我无法在 Regex 中完成此操作。换句话说,我现在有两个问题。 ;o) 我已经尝试了下面的解决方案,但是,由于我通过声明我使用的是 Perl 引擎而混淆了这个问题,所以许多答案都是用 Perl 编写的(在我的案例中不能使用)。不过,我确实在下面发布了我的解决方案。


2008.08.27 08:04:21 (Wed)------------Start of Session-----------------  
Blat v2.6.2 w/GSS encryption (build : Feb 25 2007 12:06:19)
Sending stdin.txt to foo@bar.com
Subject: test 1
Login name is foo@bar.com
The SMTP server does not require AUTH LOGIN.
Are you sure server supports AUTH?
The SMTP server does not like the sender name.
Have you set your mail address correctly?
2008.08.27 08:04:24 (Wed)-------------End of Session------------------

2008.08.27 08:05:56 (Wed)------------Start of Session-----------------
Blat v2.6.2 w/GSS encryption (build : Feb 25 2007 12:06:19)
Error: Wait a bit (possible timeout).
SMTP server error
Error: Not a socket.
Error: Not a socket.
2008.08.27 08:06:26 (Wed)-------------End of Session------------------

2008.08.27 08:07:58 (Wed)------------Start of Session-----------------
Blat v2.6.2 w/GSS encryption (build : Feb 25 2007 12:06:19)
Sending stdin.txt to foo@bar.com
Subject: Lorem Update 08/27/2008
Login name is foo@bar.com
2008.08.27 08:07:58 (Wed)-------------End of Session------------------

最佳答案

Kyle 的回答可能是最有说服力的,但如果您将所有内容都放在一个字符串中并想使用单个正则表达式,这里有一个(经过测试的)解决方案:

(第二次更新:修复了一点,现在比以往任何时候都更具可读性;-)

my $re = qr{
( # capture in $1
(?:
(?!\n\n). # Any character that's not at a paragraph break
)* # repeated
error
(?:
(?!\n\n).
)*
)
}msxi;


while ($s =~ m/$re/g){
print "'$1'\n";
}

丑陋,但你要求它。

关于regex - 多行组和正则表达式搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/154708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com