多行的正则表达式与写入的模式不匹配

时间:2013-07-09 15:27:05

标签: java regex match multiline regex-group

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

This is my string

1 个答案:

答案 0 :(得分:0)

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