我在 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));
}
}
我的正则表达式匹配“Request ID:2, BY:123414032110 DEALER MAKER5 amount:500.00”但与其他条目不匹配。我已经在 regex101.com 上检查过了,我的所有条目都在那里匹配。
非常感谢您对此的见解。
最佳答案
这是因为你输入的|
前后有空格。
您可以使用 String.trim()
来摆脱它,例如:
Matcher match = pendingPattern.matcher(items[i].trim());
否则在拆分中使用此正则表达式,不要让空格出现在拆分数组中:
String[] items = msg.split("\\s*\\|\\s*");
关于java - 我的字符串与我的正则表达式不匹配,即使它在 regex101 上是正确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36821679/