簡體   English   中英

需要正則表達式來檢索字符 < 和 > 之間的異常消息中的電子郵件 ID

[英]Need Regular Expression to retrieve Email IDs in an Exception Message between the characters < and >

需要有關正則表達式的幫助以在錯誤堆棧中檢索電子郵件 ID,例如“某些文本、某些文本換行等等”。

嘗試使用堆棧溢出中提供的一些建議。 但他們中的大多數只打印錯誤

以下是我嘗試過的一些選項,

Matcher m = Pattern.compile("\\<([^>]+)\\)").matcher(e.getMessage());
while(m.find())
{
    System.out.println(m.group(1));
}
System.out.println(e.getMessage().split("<(<^>>+)>"));

exception.getMessage().split("\\[([^]]+)\\]")
exception.getMessage().split("\\<\"(.*?)\"\\>")
exception.getMessage().split("<(<^>>+)>")

實際結果字符串數組只包含一個值並打印整個堆棧如下,

Failed messages: javax.mail.SendFailedException: Invalid Addresses;
  nested exception is:
    com.sun.mail.smtp.SMTPAddressFailedException: 550 5.0.0 <abc@def.com>... User unknown
;
  nested exception is:
    com.sun.mail.smtp.SMTPAddressFailedException: 550 5.0.0 <def@ghi.com>... User unknown
;

PS:電子郵件ID中沒有\\。 堆棧溢出不接受后跟 < 的字符。 所以在此之前添加了轉義字符。

這應該做你想做的,盡管假設每條消息只會有一個。

public class someClass {
    private static final Pattern idPattern = Pattern.compile("<.*>");

    public static void main(String[] args) {
        doStuff();
    }

    public static void doStuff(){
        try{
            throwNPE();
        } catch (NullPointerException ex){
            String message = ex.getMessage();
            if(idPattern.matcher(message).matches()){
                System.out.println(getId(message));
            }
        }
    }

    public static String getId(String message){
        String[] messageParts = message.split("<|>");
        if(messageParts.length > 1){
            return messageParts[1];
        }else{
            throw new IllegalArgumentException();
        }
    }

    public static void throwNPE(){
        throw new NullPointerException("<123>");
    }
}

您只需要 doStuff() 和 getId(String) 作為您的示例(並且您可以刪除靜態),但是想提供一個工作示例。

任何必要的解釋,請詢問。 祝你好運!

這根據接受的答案正常工作, 正則表達式提取方括號之間的文本

Pattern.compile("\\<(.*?)\\>").matcher(e.getMessage());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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