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