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

如何在Regex中捕获多个组?

樊俊悟
2023-03-14
stxt:usa,city:14
stxt:(.*?),city:(\d.*)$
stxt:usa 
stxt:(.*?),|city:(\d.*)$

共有1个答案

江温书
2023-03-14

您可以使用

(stxt|city):([^,]+)

请参见regex演示(注意\n只是为了演示而添加的,实际生活中不需要它)。

模式详细信息:

    null
String s = "stxt:usa,city:14";
Pattern pattern = Pattern.compile("(stxt|city):([^,]+)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
    System.out.println(matcher.group(1));
    System.out.println(matcher.group(2));
} 
 类似资料:
  • 问题内容: 我需要捕获相同模式的多个组。假设我有以下字符串: 我写了以下模式 我想做的是捕获每个单词,这样第1组是:“ HELLO”,第2组是“ THERE”,第3组是“ WORLD”我的正则表达式实际上只捕获了最后一个,即“世界”。 我正在这里测试我的正则表达式,我想与Swift一起使用它(也许Swift中有一种方法可以某种方式获取中间结果,以便我可以使用它们?) 更新:我不想使用。现在,我只需

  • 我很难匹配和捕捉这些。目前我正在尝试以下变体: 我认为sed有一些regex或捕获组行为我不理解

  • 此regex:使用多个组匹配表达式。regex的要点是它捕获两个成对的模式,其中regex的第一部分必须跟在regex的第二部分后面。 如何提取这两个组中的每一个? 这里的关键是regex匹配两次,每次包含2个组。我希望每个匹配都有一个它自己的列表,这个列表包含2个元素,每个组一个。

  • 我正在试图理解这个代码块。在第一个中,我们在表达式中寻找的是什么? 我的理解是,它是任何一个字符(0或多个*),后面跟0到9之间的任何一个数字(一个或多个+),后面跟任何一个字符(0或多个*)。 执行此操作时,结果为: 使用抓取群的好处是什么?

  • 问题内容: 当我跑步 我懂了 但我认为它应该回来 因为字符串中有3 s,而不是2! 这是为什么? 我希望能够在RegEx中搜索字符串的所有出现并对其进行迭代。 FWIW:我正在使用node.js 问题答案: 仅返回第一个匹配项的捕获集,而不返回您期望的匹配项。因此,您真正看到的是(整个匹配项“ a”)和(第一个捕获项),即长度为2的数组。 同时,它的设计使您可以 再次 调用它以获取 下一个 匹配项

  • 我有下面的台词, 所以,如果我再加上两个括号,比如:那么,会有两个组吗?将返回部分,而返回部分? 代码段是为了澄清我的困惑而给出的。不是我处理的代码。上面给出的代码可以用以更简单的方式完成。