java - 我的字符串与我的正则表达式不匹配,即使它在 regex101 上是正确的

标签 java android regex

我在 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/

相关文章:

java - BLE 与 MiBand 3

android - 使用非对称按钮背景图片

PHP preg_replace 用三种不同的模式三次?对还是错?

java - 如何防止轻量级组件接收鼠标事件?

java - 如何自动为@SuiteClasses创建列表

java - 无法从jetty访问index.html

.NET 正则表达式创建强密码

java - Swing MVC - 事件传播和数据共享

android - 转换为 Dalvik 格式失败,出现错误 1 ​​- 更新 Android SDK 和 ADT 后

ruby - 可以使用 ruby​​ 触发器作为过滤器不那么笨拙吗?