我在Android Studio中遇到这个奇怪的问题,我的程序无法通过正则表达式解析我匹配的字符串。
private Pattern myPattern = Pattern.compile("([Request ID:]+)(\\d+)([, BY:]+)(\\d+)([ ])([A-Z\\d ]+)([ ])([amount:]+)(\\d+(\\.\\d{1,2}))");
msg = "Request ID:22, BY:123414045601 DEALER01 amount:100.00 | Request ID:41, BY:123414012341 DEALER01 amount:100.00 | Request ID:2, BY:123414032110 DEALER MAKER5 amount:500.00";
String[] items = msg.split("\\|");
for(int i = 0; i <items.length; i++){
Matcher match = pendingPattern.matcher(items[i]);
if (!match.matches()) {
} else {
list1.add(match.group(2));
list2.add(match.group(4));
list3.add(match.group(9));
}
}
我的正则表达式匹配&#34;请求ID:2,BY:123414032110经销商MAKER5金额:500.00&#34;但与其他条目不匹配。我已经在regex101.com上查看了这个,我的所有参赛作品都在那里匹配。
非常感谢您对此的见解。
答案 0 :(得分:1)
这是因为输入中|
之前和之后的空格。
你可以使用String.trim()
摆脱它:
Matcher match = pendingPattern.matcher(items[i].trim());
或者不要通过在split中使用此正则表达式让空格出现在拆分数组中:
String[] items = msg.split("\\s*\\|\\s*");