问题标签 [capturing-group]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5589 浏览

java - Java Regex,使用逗号分隔值捕获组

InputString:一名士兵可能有瘀伤、伤口、标记、脱臼或其他伤害他的伤病。

ExpectedOutput :
瘀伤
伤口
标记
脱臼
受伤

广义模式尝试

p>

该模式应该能够匹配其他输入字符串,例如:一名士兵可能有瘀伤或其他伤害他的伤害。

在尝试上面的广义模式时,输出是: bruises dislocations Injuries

“(?:(\s)?,(\s)?(\w+?))*”的捕获组有问题。捕获组又出现了一次..但它只返回“错位”。“标记”和“错位”:被吞噬。

您能否建议正确的模式应该是什么,错误在哪里?这个问题最接近这个问题,但该解决方案没有帮助。

谢谢。

0 投票
5 回答
994 浏览

c# - 带有可选部分的正则表达式不会创建反向引用

我想在一行文本的末尾匹配一个可选标签。

输入文本示例:

我想匹配花括号中的部分并创建对它的反向引用。

我的正则表达式如下所示:

(有点简化,我也在标签前匹配部分):

它匹配行 ok (有和没有标签),但不会创建对标签的反向引用。

如果我删除“?” 字符,所以正则表达式是:

它创建了对标签的反向引用,但不匹配没有标签的行。

我从http://www.regular-expressions.info/refadv.html了解到可选运算符不会影响反向引用:

圆括号将它们之间的正则表达式分组。它们捕获与其中的正则表达式匹配的文本,这些文本可以在反向引用中重复使用,并且它们允许您将正则表达式运算符应用于整个分组的正则表达式。

但一定是误会了什么。

如何使标签部分成为可选部分并在存在时创建反向引用?

0 投票
2 回答
5273 浏览

java - 使用正则表达式保存子字符串

我是 Java (或任何语言)中正则表达式的新手,我想使用它们进行查找。我不明白如何做的棘手部分是替换字符串中匹配的内容。

例如,如果我要查找的行是

我能够编写一个找到该行的正则表达式,但是找到“事物”这个词是什么(因为它可能在不同的行之间有所不同)是我的问题。我可能想用其他东西替换那个词,或者将它保存在一个变量中以备后用。有没有什么简单的方法可以使用 Java 的正则表达式引擎来做到这一点?

0 投票
3 回答
1655 浏览

.net - 是否有一种正则表达式可以让我计算 * 和 + 运算符匹配的重复次数?

是否有一种正则表达式可以让我计算与*and+运算符匹配的重复次数?我特别想知道在.NET 平台下是否可行。

0 投票
2 回答
12427 浏览

regex - Scala 正则表达式命名捕获组

scala.util.matching.Regex trait MatchData我看到支持 groupnames ,我认为这与(Regex Named Capturing Groups)有关

但由于Java在我理解的版本 7 之前不支持组名(参考),Scala 版本 2.8.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.给了我这个例外:

所以问题是 Scala 支持的命名捕获组?如果有的话,有什么例子吗?

0 投票
5 回答
60948 浏览

regex - 使用正则表达式的 Scala 捕获组

假设我有这个代码:

我希望findAllIn只返回483,但相反,它返回了two483three。我知道我可以unapply只提取那部分,但我必须为整个字符串设置一个模式,例如:

有没有另一种方法来实现这一点,而不java.util直接使用类,并且不使用 unapply?

0 投票
6 回答
383 浏览

java - 捕获和 (thisPartOnly) 与同一组

假设我们有以下输入:

我们还有以下正则表达式:

现在我们得到两个匹配项(如 rubular.com 上所见):

  • <amy>是匹配,\1捕获amy\2失败
  • (bob)是匹配,\2捕获bob\1失败

这个正则表达式完成了我们想要的大部分工作,它们是:

  • 它正确匹配左括号和右括号(即没有混合)
  • 它捕获了我们感兴趣的部分

但是,它确实有一些缺点:

  • 重复捕获模式(即“主要”部分)
    • \w+在这种情况下,但一般来说,这可能非常复杂,
      • 如果它涉及反向引用,则必须为每个替代项重新编号!
      • 重复使维护成为噩梦!(如果它改变了呢?)
  • 这些组基本上是重复的
    • 根据哪些备用匹配,我们必须查询不同的组
      • 它只是\1\2在这种情况下,但通常“主要”部分可以拥有自己的捕获组!
    • 这不仅不方便,而且在某些情况下这是不可行的(例如,当我们使用仅限于查询一组的自定义正则表达式框架时)
  • 如果我们还想匹配{...},[...]等,情况会迅速恶化。

所以问题很明显:我们如何在不重复“主要”模式的情况下做到这一点?

注意:在大多数情况下,我对java.util.regex风味感兴趣,但也欢迎其他风味。


附录

本节没有新内容;它只是用一个例子来说明上面提到的问题。

让我们把上面的例子带到下一步:我们现在要匹配这些:

但不是这些:

使用替代技术,我们有以下工作(如 rubular.com 所示):

如上所述:

  • 主要模式不能简单地重复;反向引用必须重新编号
  • 如果发生变化,重复也意味着维护噩梦
  • 根据备用匹配项,我们必须查询\1 \2\3 \4\5 \6
0 投票
3 回答
191 浏览

javascript - 我的正则表达式做错了什么?

我试图从以下位置捕捉“Rio Grande Do Leste”:

使用

我究竟做错了什么?

更新:

剩下2个问题:

1) 搜索 (document) 没有产生任何结果,但将其更改为 (document.body.innerHTML) 有效。这是为什么?

2)我不得不将其更改为: myregexp.exec(document.body.innerHTML) [1];得到我想要的,否则它会给我一些结果,其中包括<h1>. 这是为什么?

3)(已回答)为什么我需要使用 ".*" ?我认为它会收集()之间的任何东西?

0 投票
18 回答
958791 浏览

regex - 什么是正则表达式中的非捕获组?

非捕获组,即,如何(?:)在正则表达式中使用,它们有什么用?

0 投票
5 回答
45713 浏览

javascript - 如何在 JavaScript Regexp 中捕获任意数量的组?

我希望这行 JavaScript:

返回类似的东西:

但它只返回最后捕获的匹配:

有没有办法获取所有捕获的匹配项?