【发布时间】:2018-01-30 18:06:22
【问题描述】:
我在代码中有以下文字:
String input = "[xx] Guidance) Boundary: 123 | Total: 1010 | Steps Count test: 21 | initial value Count: 19";
我正在尝试将以 Boundary 开头的键值对写入 LinkedHashmap,我使用了此模式匹配器:
Matcher m =
Pattern.compile("(\\S+):\\s(\\S*)(?:\\b(?!:)|$)").matcher(line1);
但它不起作用并忽略键之间的空格,例如:步数测试?我该如何调整它以使其正常工作?
【问题讨论】:
-
我不清楚你在问什么。你想要什么结果?您需要考虑哪些输入格式?您使用什么语言?您是否可以考虑使用一些简单的逻辑,例如:“将所有内容从 'Boundary' 开始直到字符串的结尾,然后在 '|' 上拆分字符”?
-
我正在使用 Java,我当前使用的正则表达式不适用于我提供的输入格式。 “边界:123 | 总计:1010 | 步数测试:21 | 初始值计数:19”的正确正则表达式是什么。这样我就可以将键值对映射到这样的映射 while (m.find()) { pairs.put(m.group(1), m.group(2)); }
-
正确答案是,就像我说的,可能是not to use a regex。有更简单的方法可以做到这一点。
-
我下面的解决方案对您有用吗?