当前位置: 首页 > 知识库问答 >
问题:

匹配花括号的Java regex-“无效转义序列”

云和同
2023-03-14

我希望通过将嵌套的JSON字符串递归地拆分{}来解析它们。我得到的regex是“{([^}]*.?)}”,我已经测试过它可以恰当地获取我想要的字符串。但是,当我试图将它包含在Java中时,我得到了以下错误:“无效的转义序列(有效的转义序列是

这是我的代码,也是错误发生的地方:

String[] strArr = jsonText.split("\{([^}]*.?)\}");

我做错了什么?

共有1个答案

山疏珂
2023-03-14

Java regexes令人讨厌的地方是,Java不能将regex识别为regex。
它只接受\\\'\“\u[十六进制数]作为有效的转义序列。因此,您必须转义反斜杠,因为显然\{是无效的转义序列。
更正版本:

String[] strArr = jsonText.split("\\{([^}]*.?)\\}");
 类似资料:
  • 我需要解析一个日志文件并获取时间和相关的函数调用字符串,该字符串存储在日志文件中,如下所示:{“time”:“2012-09-24t03:08:50”,“message”:“call()started”} 在其他字符串字符之间会有多个日志时间函数调用,因此我希望使用regex来遍历文件并获取所有这些 我想获取整个记录的信息,包括花括号 我不断得到非法重复错误,请帮助!谢了。

  • 我尝试用Java编写regex来匹配URL。我在互联网上找到了regex,它在在线regex编辑器中工作得很好。当我试图在eclipse上运行它时,它会给出以下错误:无效的转义序列(有效的转义序列是\B\T\N\F\R\\“\'\\) 我怎样才能解决这个问题?

  • 问题内容: 如何在Ansible 1.9.2中转义双花括号? 例如,如何在以下shell命令中转义大括号? 问题答案: 这是一个非常干净和Ansible的本机解决方法,不依赖于花括号。我们假设之前我们刚刚使用 Ansible docker模块 引用了一个容器: 现在,在Variable中具有Docker容器的IP 。我还在我的文章《与Docker融为一体的婚姻》中发布了此变通办法。 [更新2015

  • 我有一个字符串: 我想匹配花括号外的所有逗号。 我想要的输出是: 我尝试了: 但输出不同: 谢谢你。

  • 上面的正则表达式返回括号之间的文本。 如: 如何重写上面的正则表达式,所以我提供了一个类似的字符串,它将返回。i、 e带括号的部分,其中包含大括号中的字符串。

  • 问题内容: 我需要解析一个日志文件并获取时间和相关的函数调用字符串,它以如下方式存储在日志文件中:{“ time”:“ 2012-09-24T03:08:50”,“ message”:“ Call( )开始”} 在其他字符串字符之间将有多个记录的时间函数调用,因此我希望使用正则表达式浏览文件并获取所有这些 我想获取包括大括号在内的整个记录​​的信息 我尝试了以下 和 我不断收到非法的重复错误,请帮