我有一个包含已发送和已接收消息的日志文件。我想使用正则表达式提取这些消息。这是日志文件的示例:
Message recieved:0908082349234 Session: ...
A message is sent: 12344384834
我编写了以下正则表达式来提取消息:
String pattern = "((A message is sent: )|(Message received:))(.*)(( Session:)|$)";
而且它不起作用。我尝试了许多不同的形式,但都没有奏效。我想用一个正则表达式来做到这一点。现在我使用一个正则表达式发送,另一个正则表达式接收。但是应该有一种方法可以对它们都使用一个正则表达式!
最佳答案
.*
贪婪匹配。使用非贪婪版本(.*?
):
String pattern = "(A message is sent: |Message received:)(.*?)( Session:|$)";
顺便说一句,给定的日志文件包含错字。如果日志文件确实包含拼写错误,您应该相应地调整正则表达式。
Message recieved:0908082349234 Session: ...
^^
关于java - 正则表达式在java中的两个表达式之间提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20771679/