[英]Regex to extract String between two expressions in java
我有一個包含已發送和已接收消息的日志文件。 我想使用正則表達式提取這些消息。 這是日志文件的示例:
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: ...
^^
嘗試這種模式
"((A message is sent: )|(Message recieved:))(\\d+?)(.*)"
順便說一句。 似乎你'收到'是你的日志和你的模式之間的錯過匹配
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.