java - 正则表达式否定冒号不起作用

标签 java regex

我有一个 JSON 字符串,它是:

{"dependencies":["xz","pkg-config","glib","gobject-introspection"],"conflicts_with":[],"caveats":null,"options":[{"option":"--universal","description":"Build a universal binary"}]}

然后我写了一个正则表达式来找到“dependencies”后面的数组:

(?<=\"dependencies\":).*[^:](?=,)

在 Java 中:

"(?<=\\\"dependencies\\\":).*[^:](?=,)"

然而结果却是:

["xz","pkg-config","glib","gobject-introspection"],"conflicts_with":[],"caveats":null,"options":[{"option":"--universal"

并且只排除了最后一个冒号。

请帮帮我。

最佳答案

我建议使用这个正则表达式:

(?<=\"dependencies\":).[^:]*(?=,)

或者,几乎相等:

(?<=\"dependencies\":)[^:]+(?=,)

关于java - 正则表达式否定冒号不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29513945/

相关文章:

java - 只能处理第一个字符串

java - 如何在另一个方法中调用onReceive方法?

javascript - 带有 XCode 的正则表达式 Javascript

regex - XSLT - 获取 text() 节点的数值

c++ - 在 boost 正则表达式中使用 char* 上的字符串迭代器

c# - 正则表达式匹配某些公式

java - 具有主查询 ID 的 Hibernate 限制子查询

java - 第一部分 - Java 分割字符串函数

java - Grails 2.4.5 依赖项解析错误

c# - 为什么 Regex isMatch 为真时给出假?