簡體   English   中英

多行正則表達式與編寫的模式不匹配

[英]regex with multiline doesn't match with pattern written

作為對調制解調器讀取請求的回應,我收到一條文本消息,其格式如下。 我正在嘗試使用正則表達式多行來存儲不同的信息,例如單元格編號,日期,我的記錄器名稱(AUTO-1),十六進制值以及最后兩個在不同的行中。

這是我的模式,用於讀取多行字符串,但不幸的是它不匹配。

private static final String REGEX_EMPTY_LINE = ".*\\s";
private static final String REGEX_NUMBER_DATE_TIME = ".*\".*\",\"(.*)\",\".*\",\"(.*)\"\\s";
private static final String REGEX_OK = ".*";
private static final String REGEX_LETTURA = ".*\"(.*)\"([E|T|V])_([0-9A-F]{3})_([0-9A-F]{3})_([b|B])_(.{22})([0-9A-F]{2})";
private static final Pattern READ_REGEX = Pattern.compile(REGEX_EMPTY_LINE + REGEX_NUMBER_DATE_TIME + REGEX_LETTURA + REGEX_EMPTY_LINE + REGEX_EMPTY_LINE + REGEX_OK, Pattern.MULTILINE);


String raw="\r\n+CMGR: \"REC READ\",\"+393355222692\",\"\",\"13/07/09,15:46:31+08\"\r\n>\"AUTO-1\"T_11C_000_B_----------------------20\r\r\n\r\nOK\r\n";

Matcher matcher = READ_REGEX.matcher(raw);
if(matcher.find()){
    System.out.println("Match");
}

這是我的弦

您的字符串對換行符使用"\\r\\n" ,但是對於換行符,您的模式似乎是"\\\\s" ,它僅匹配一個字符。 相反,您應該使用"\\\\s{2}"

暫無
暫無

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

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