作为对调制解调器读取请求的回复,我收到了下面附带格式的短信。 我尝试使用正则表达式多行来存储不同的信息,如单元格编号,日期,我的记录器名称(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");
}
答案 0 :(得分:0)
您的字符串使用"\r\n"
作为换行符,但换行符的模式似乎是"\\s"
,只匹配一个字符。相反,你应该使用"\\s{2}"
。