【发布时间】:2017-09-05 12:14:00
【问题描述】:
我有这个比平时长一点的正则表达式。我尝试在文本文档中捕获一些值。
\\n*.*(k\\s=\\s\\d)(.|\\n)*?estimate\\s.*\\n*\\s*((\\d+|<)\\.\\d+)\\s*((\\d+|<)\\.\\d+)\\s*((\\d+|<)\\.\\d+)\\s*((\\d+|<)\\.\\d+)\\s*((\\d+|<)\\.\\d+)\\s*((\\d+|<)\\.\\d+)\\s+
它在 regexr.com link 上运行良好
但在 Java 中只有这部分有效
\\n*.*(k\\s=\\s\\d)(.|\\n)*?estimat
只要我添加缺少的“e”,它就会停止工作。
现在我忽略了一些组被错误地填充。
出了什么问题?
【问题讨论】:
-
听起来很奇怪,你能发布一个重现它的 Java 代码的 sn-p 吗?
-
观察输入字符串。
-
在您的情况下,我将首先使用正则表达式完全拆分文本,然后使用第二个或更多正则表达式分析您感兴趣的值。使用单个正则表达式做所有事情是 a$$ 的痛苦
-
永远不要使用
(.|\\n)*?。替换为(?s:.*?)。在正则表达式中,应该跨行匹配的.*?应该替换为[^]*?(因为该站点使用 JS 正则表达式风格)。 -
@SebastianBauer 请考虑在下面接受/支持我的回答。