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

在Java中转义这个长regex

梅逸清
2023-03-14

null

正则表达式

^(?:name = \")([\w]*)(?:\"\ncoords = \"\[)(?:[\d\.]*)(?:\,)(?:[\d\.]*)(?:\,)([\d\.]*)(?:\]\")

要匹配的文本为:

name = "abc"
coords = "[0.0,0.0,666]"

在在线工具中,regex做的正是我想要的:为name值(这里是:abc)和z-coordiate值(这里是:666)创建一个捕获组,同时省略其余部分。

null

String regex = "^(?:name = \\\")([\\w]*)(?:\\\"\\ncoords = \\\"\\[)(?:[\\d\\.]*)(?:\\,)(?:[\\d\\.]*)(?:\\,)([\\d\.]*)(?:\\]\\\")";

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(THE ABOVE TEXT); 

null

null

共有1个答案

万修为
2023-03-14

这是正确的转义正则表达式:

String regex = "^(?:name = \")([\\w]*)(?:\"\\ncoords = \"\\[)(?:[\\d.]*)(?:,)(?:[\\d.]*)(?:,)([\\d.]*)(?:]\")";

错误是由于句点前缺少第二个反斜杠造成的。

无论如何,很多东西(如引号、逗号、方块内的句号等)都不需要regex-excape。我试图在这个意义上简化你的正则表达式。

null

 类似资料:
  • 问题内容: 我正在尝试下面的代码,但出现错误 错误 我想要结果 问题答案: 请改用,它不使用正则表达式,因为您根本不需要它们: 这将按预期打印。

  • 问题内容: 我坚持这样: 我有一个写在HTML报告。的是 但是该链接不起作用,因为“ Evidencia”未包含在引号中,如何将引号放在参数中? 在带来这二零一三年十月一十日09:15:00.110 问题答案: 您可以使用。在Java中,您可以使用来访问转义字符。

  • 问题内容: 我正在读取Java中的源文件,但是当我打印它(sysout)时,转义的字符不再转义。如何在Java中转义像和这样的字符? 问题答案: 您应该使用Apache Commons Text中的类(您也可以在Apache Commons Lang3中找到该类,但已弃用该类)。您会发现Apache Commons中还有许多其他产品可能对您在Java开发中遇到的其他问题有用,因此您不必重新发明轮子

  • 本文向大家介绍java中关于转义字符的一个bug,包括了java中关于转义字符的一个bug的使用技巧和注意事项,需要的朋友参考一下 在java中,你可以定义 这样的字面量,例如: System.out.println("\u535a\u5ba2\u56ed"); 这样的代码不管在什么编码环境下都不会出现中文乱码的问题 但是你不能定义这样的字面量: 这是因为\u000a和\u0027是特殊转义字符,

  • 问题内容: 据我所知,JVM将转义分析用于某些性能优化,例如锁粗化和锁省略。我很想知道JVM是否有可能使用转义分析来决定可以在堆栈上分配任何特定对象。 一些资源使我认为我是对的。是否有实际执行此操作的JVM? 问题答案: 我不认为它会进行堆栈分配的分析。例: 与: 据称JDK 7支持堆栈分配。

  • 问题内容: 目前,我过去通常在字符串中转义不需要的HTML标记,但是后来我意识到它也可以转义带有重音的字符,这是我不想要的。 您是否知道任何用于转义HTML标记的解决方案,但请保留我的特殊字母(对某些人来说,这是正常的;])。 提前致谢! 巴拉斯 问题答案: