0

作为对调制解调器读取请求的回应,我收到了一条附有以下格式的短信。我正在尝试使用正则表达式多行来存储不同的信息,例如单元格编号、日期、我的记录器名称(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");
}

这是我的字符串

4

1 回答 1

0

您的字符串"\r\n"用于换行符,但换行符的模式似乎是"\\s",它只匹配一个字符。相反,您应该使用"\\s{2}".

于 2013-07-09T15:40:36.917 回答