我在使用正则表达式时遇到了麻烦,因为我只能匹配我的一些目标。
我有一个日志文件,我必须匹配一些项目并写入另一个txt文件。我为我的代码的一个简短例子编写了一个Java代码,但是当我放入整个文件时,一切都搞砸了。
*052511 074217 0065 02242806000 UNKNOWN U G
*052511 074217 0065 4874 02242806000 UNKNOWN U A
*052511 074218 0065 4874 02242806000 UNKNOWN U R
-------- 05/25/11 07:42:17 LINE = 0065 STN = 4874
CALLING NUMBER 02242806000
NAME UNKNOWN
UNKNOWN
BC = SPEECH
00:00:00 INCOMING CALL RINGING 0:02
00:00:11 CALL RELEASED
我必须从文件中找到这些结果:
进来的,05/25 / 11,07:42:17,0065,4874,02242806000,00:00:09,2
在此表达式00:00:09
表示[00:00:11-00:00:00]-0:02
对于每个来电和去电,我必须进行上述对话。
答案 0 :(得分:0)
您可以使用正则表达式:
(?xm:
^-------- \s+ (\S+) \s+ (\S+) \s+ LINE\s*=\s*(\d+) \s+ STN\s*=\s*(\d+)
\s+ CALLING\ NUMBER \s+ (\d+) \s*
(?:^(?:[ \t]+.*)?[\n\r]+)* # eat unwanted part
^(\d\d:\d\d:\d\d) \s+ INCOMING\ CALL \s+ RINGING\ ([\d:]+) \s*
(?:^\d.*[\r\n]+)* # possible stuff
^(\d\d:\d\d:\d\d) \s+ CALL\ RELEASED
)
使用捕获组的值来获取结果。您可能需要删除/x
相关内容,例如注释和空格。