用正则表达式表示以下规则GZ[日期: 格式][param1][流水号:serialNoCode1:长度]-[流水号:serialNoCode2:长度],用java代码编写
时间: 2024-01-06 16:04:11 浏览: 103
正则表达式可以如下定义:
String regex = "GZ\\[(\\d{4}-\\d{2}-\\d{2})\\]\\[(.*?)\\]\\[流水号:(\\w+):(\\d+)\\]-\\[流水号:(\\w+):(\\d+)\\]";
其中:
- GZ表示固定的字符;
- \\[和\\]表示中括号的转义字符;
- (\\d{4}-\\d{2}-\\d{2})用于匹配日期格式,\\d{4}表示4位数字,\\d{2}表示2位数字,-表示横杆,最终表示年-月-日的格式;
- (.*?)用于匹配参数param1;
- (\\w+)用于匹配流水号,\\w+表示1个或多个字母数字字符,再次出现的原因是需要匹配两个不同的流水号;
- (\\d+)用于匹配流水号的长度。
Java代码可以如下编写:
String input = "GZ[2022-10-01][param1][流水号:ABCD1234:10]-[流水号:WXYZ5678:8]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
String date = matcher.group(1);
String param1 = matcher.group(2);
String serialNoCode1 = matcher.group(3);
int serialNoCode1Len = Integer.parseInt(matcher.group(4));
String serialNoCode2 = matcher.group(5);
int serialNoCode2Len = Integer.parseInt(matcher.group(6));
// Do something with the extracted values
} else {
// No match found
}