Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中提取特定模式的正则表达式_Java_Regex - Fatal编程技术网

java中提取特定模式的正则表达式

java中提取特定模式的正则表达式,java,regex,Java,Regex,我想匹配模式,包括方括号、等号和引号 [fixedtext="sometext"] 什么是正确的正则表达式 任何事情都可能发生在引号内“fixedtext”是固定的 您的基本解决方案尽管我对此持怀疑态度,但根据评论,基本上是: "\\[fixedtext=\\\"(.*)\\\"\\]" 决议如下: "\[fixedtext=\"(.*)\"\]" []和引号的简单转义。。*表示将所有内容作为捕获组匹配器捕获到引号中。group1 但是如果您有一个字符串,例如“[fixedtext

我想匹配模式,包括方括号、等号和引号

[fixedtext="sometext"]
什么是正确的正则表达式


任何事情都可能发生在引号内“fixedtext”是固定的

您的基本解决方案尽管我对此持怀疑态度,但根据评论,基本上是:

  "\\[fixedtext=\\\"(.*)\\\"\\]"
决议如下:

  "\[fixedtext=\"(.*)\"\]"
[]和引号的简单转义。。*表示将所有内容作为捕获组匹配器捕获到引号中。group1

但是如果您有一个字符串,例如“[fixedtext=abc\]def]”,您将得到abc\而不是abc\]def的答案

如果您知道结束括号结束该行,请使用:

  "\\[fixedtext=\\\"(.*)\\\"\\]$"

在末尾添加$以标记行的末尾,这应该相当可靠。

我的建议是使用命名的捕获组。 您可以在此处找到更多详细信息:

以下是您的输入示例:

String input = "[fixedtext=\"sometext\"]";

Pattern pattern = Pattern.compile("\\[(?<field>.*)=\"(?<value>.*)\"]");
Matcher matcher = pattern.matcher(input);

if (matcher.matches()) {
  System.out.println(matcher.group("field"));
  System.out.println(matcher.group("value"));
} else {
  System.err.println(input + " doesn't match " + pattern);
}

你试过什么?预期产量是多少?是否存在边缘情况?构成模式每个部分的字符池是什么?可以在中找到转义\吗?也可以使用单引号,还是只使用双引号?是否有可能在[或之前]或甚至在=”周围出现空白?您是否有不应匹配的字符串示例,即未终止字符或非法字符?你能有像[abc=[abc=x]]这样的嵌套吗?很多问题都没有答案,所以很难给出一个清晰简洁的答案。还有,是java还是python??“引号内可能出现任何情况。”这可能是一个问题。引号内的引号如何?@megan该字符串文本\\,\\内允许什么转义序列?如果是,请参阅。此。*将贪婪地跨越多个[tags]@PatrickParker这是贪婪和占有的区别。是的,它将捕获内容,然后它将后退以完成匹配。贪婪将后退,占有不会。啊,是的,我对abc/def的评论是后退的,因为它捕获所有内容。但是正则表达式仍然可以正确捕获内容,除非嵌套/重复条目OP不清楚这是否是一项要求。因此,您不知道此解决方案是否真的适用于他,或者仅给出提供的示例,它就适用。提示:尝试[^]而不是。但是,如果允许转义序列,OP从未响应,所以我们不知道,那么您需要这样的解决方案?*将贪婪地跨越多个[标记]