问题标签 [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.
java - Java Regex,使用逗号分隔值捕获组
InputString:一名士兵可能有瘀伤、伤口、标记、脱臼或其他伤害他的伤病。
ExpectedOutput :
瘀伤
伤口
标记
脱臼
受伤
广义模式尝试:
该模式应该能够匹配其他输入字符串,例如:一名士兵可能有瘀伤或其他伤害他的伤害。
在尝试上面的广义模式时,输出是: bruises dislocations Injuries
“(?:(\s)?,(\s)?(\w+?))*”的捕获组有问题。捕获组又出现了一次..但它只返回“错位”。“标记”和“错位”:被吞噬。
您能否建议正确的模式应该是什么,错误在哪里?这个问题最接近这个问题,但该解决方案没有帮助。
谢谢。
c# - 带有可选部分的正则表达式不会创建反向引用
我想在一行文本的末尾匹配一个可选标签。
输入文本示例:
我想匹配花括号中的部分并创建对它的反向引用。
我的正则表达式如下所示:
(有点简化,我也在标签前匹配部分):
它匹配行 ok (有和没有标签),但不会创建对标签的反向引用。
如果我删除“?” 字符,所以正则表达式是:
它创建了对标签的反向引用,但不匹配没有标签的行。
我从http://www.regular-expressions.info/refadv.html了解到可选运算符不会影响反向引用:
圆括号将它们之间的正则表达式分组。它们捕获与其中的正则表达式匹配的文本,这些文本可以在反向引用中重复使用,并且它们允许您将正则表达式运算符应用于整个分组的正则表达式。
但一定是误会了什么。
如何使标签部分成为可选部分并在存在时创建反向引用?
java - 使用正则表达式保存子字符串
我是 Java (或任何语言)中正则表达式的新手,我想使用它们进行查找。我不明白如何做的棘手部分是替换字符串中匹配的内容。
例如,如果我要查找的行是
我能够编写一个找到该行的正则表达式,但是找到“事物”这个词是什么(因为它可能在不同的行之间有所不同)是我的问题。我可能想用其他东西替换那个词,或者将它保存在一个变量中以备后用。有没有什么简单的方法可以使用 Java 的正则表达式引擎来做到这一点?
.net - 是否有一种正则表达式可以让我计算 * 和 + 运算符匹配的重复次数?
是否有一种正则表达式可以让我计算与*
and+
运算符匹配的重复次数?我特别想知道在.NET 平台下是否可行。
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 支持的命名捕获组?如果有的话,有什么例子吗?
regex - 使用正则表达式的 Scala 捕获组
假设我有这个代码:
我希望findAllIn
只返回483
,但相反,它返回了two483three
。我知道我可以unapply
只提取那部分,但我必须为整个字符串设置一个模式,例如:
有没有另一种方法来实现这一点,而不java.util
直接使用类,并且不使用 unapply?
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
javascript - 我的正则表达式做错了什么?
我试图从以下位置捕捉“Rio Grande Do Leste”:
使用
我究竟做错了什么?
更新:
剩下2个问题:
1) 搜索 (document) 没有产生任何结果,但将其更改为 (document.body.innerHTML) 有效。这是为什么?
2)我不得不将其更改为: myregexp.exec(document.body.innerHTML) [1];得到我想要的,否则它会给我一些结果,其中包括<h1>
. 这是为什么?
3)(已回答)为什么我需要使用 ".*" ?我认为它会收集()之间的任何东西?
regex - 什么是正则表达式中的非捕获组?
非捕获组,即,如何(?:)
在正则表达式中使用,它们有什么用?
javascript - 如何在 JavaScript Regexp 中捕获任意数量的组?
我希望这行 JavaScript:
返回类似的东西:
但它只返回最后捕获的匹配:
有没有办法获取所有捕获的匹配项?