簡體   English   中英

正則表達式在java中的兩個表達式之間提取String

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM