问题标签 [capture-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 投票
1 回答
349 浏览

regex - 如果在正则表达式的双引号内有逗号,如何捕获组?

我是这个正则表达式匹配的新手,并且有如下示例输入。,

现在我需要一个正则表达式来分割两条线,就像下面的捕获组..,

我找到了正则表达式并像这样在 ExtractTextProcessor 中使用它。

它匹配如下..,

如果我做错了什么,请阻止我

请任何人指导我解决这个问题。,

谢谢

0 投票
1 回答
218 浏览

regex - 具有由可变数量的单词组成的子字符串的捕获组的正则表达式

使用以下 Bash 脚本(改编自此答案):

我想匹配如下行(通过标准输入或作为第一个参数传递的文件提供):

并将它们解析为 4-5 个字段。

例如,Calcipotriol - Daivonex Cream 50mcg/1g 30 g [1]应将行分解为如下字段:

  • Calcipotriol(成分)
  • Daivonex Cream(品牌)
  • 50mcg/1g 30 g(力量)
  • 1(包装尺寸)
  • (空,因为后面没有文字[1])(表格)

但是,当我运行我的脚本时,什么也没有匹配项。

这是孤立的正则表达式(换行符只是为了便于阅读):
^([[:alpha:]]+)[[:space:][:punct:]]+([[:alpha:][:space:]]+)[[:space:]]([[:digit:]+[mcg|mg|g][:space:][\/0-9a-zA-Z[:space:]]*])[\[]([[:digit:]]+)[\]]([[:alpha:]]*)$

你能告诉我如何匹配一个字符串,例如50mcg/1g 30 g并捕获它 ${BASH_REMATCH[4]}吗?

0 投票
1 回答
75 浏览

regex - 正则表达式:使用最后匹配的可选捕获组

我想使用正则表达式完成以下操作:

输入

输出

正则表达式匹配

和子

让我接近(见:https ://regex101.com/r/tKgCBi/1/ )

如果没有进行此(可选)匹配,我如何使用最后一个(可选)匹配组?我假设它在(M [1 | 2])时设置\ 1 = NULL?失败。

(我正在使用 Python 的“re”模块)

0 投票
2 回答
15215 浏览

javascript - 正则表达式 - 重复捕获组

我试图弄清楚如何comma-separated在以下 url 字符串中的值上重复捕获组:

id=1,2;name=user1,user2,user3;city=Oakland,San Francisco,Seattle;zip=94553,94523;

我正在使用它RegExp,这是我想要的返回结果,除了值,因为它们是动态的,即。可能是 url 参数中的 2、3、4 等用户,我想知道我是否可以为每个值创建一个捕获组,而不是user1,user2,user3一个捕获组。

正则表达式: (^|;|:)(\w+)=([^;]+)*

这是使用RegExp在线进行的现场演示

示例输出:

  • Group1 -(分号,冒号)
  • Group2 - (key ie. id,name,city,zip)
  • 组 3 -(值 1)
  • Group4 - (value2) *如果存在
  • Group5 - (value3) *如果存在
  • Group6 - (value4) *如果存在

等等...基于我之前解释的动态值。

问题:我使用*to 循环重复模式的表达式有什么问题?

0 投票
0 回答
1095 浏览

regex - 捕获组正则表达式 Qradar

例如,我做了一些解析:

  1. ',+([A-Za-zA-zÀ-ú+ \/\w+0-9._%+-]+(?=,))'
  2. '---=+([A-Za-zÀ-ú+ \/\w+0-9._%+-]+(?=&))'

我必须在 QRadar 中输入一个捕获组,两个匹配日志都正确,但是第一个接受这个捕获组 $1,第二个不接受它,它只接受捕获组中的 1,我能做什么在第二个中输入此捕获组 $1

0 投票
1 回答
482 浏览

regex - 匹配 Perl 正则表达式中命名捕获组的位置

在 Perl 中,命名捕获组可用于使用正则表达式从字符串中提取数据:

印刷

但是如何获得匹配项 A 和 B 在字符串中的位置"abc"?使用命名的捕获组时,可以引用正则表达式变量@-and @+,但这不适用于命名组 (*)。

(*) '不起作用'是指我不能使用捕获组的名称来检索位置,而只能使用组的编号(例如$-[1],对于组 A 的起始位置,但不是类似的东西$START_POS{A})。这减少了命名捕获组的使用,如果事先不知道捕获组的顺序,甚至可能无法使用。

0 投票
2 回答
3711 浏览

regex - 使用 grep 命名的捕获组

我使用 Unix grep。我想知道如何用它处理命名的捕获组。

目前这就是我所拥有的:

echo "foobar" | grep -P "(?<q>.)ooba(?<w>.)"

所以理论上,我有q=fand w=r,但是我不知道如何使用这些变量或通过管道将它们交给下一个命令(例如 awk)。

最后,我希望得到以下结果:

f r

上面的字符串只是一个例子。捕获组可以在任何地方,可以是任意数量,打印也可以是任意顺序。我这么说是因为我不是专门寻找一种方法来提取字符串的最后一个和第一个字符,而是一种从字符串中提取尽可能多的变量的方法。我知道使用-o, \Kor之类的技巧(?<=some text).*?(?=some other text),但这些只提取字符串的一部分而不是多个。

0 投票
2 回答
47 浏览

regex - 基于特定文本行选择文本组/行的正则表达式

我有以下格式的文本

我想根据其中的一行文本选择整个场景。

例如。

基于'Given sed do eiusmod tempor incididunt ut labore et dolore magna aliqua'

我想要第二种情况

,也是第三种和第四种情况——但不是第一种

我在尝试

但这给了我第一个和第二个场景,第三个但没有第四个场景。我也尝试了其他模式,但并不成功。帮助?

0 投票
2 回答
250 浏览

regex - awk - 解析在字段中具有相同字符的文本作为分隔符

考虑这个来源:

如您所见,字段分隔符在某些字段内使用,包含在". 我无法直接解析,awk因为无法避免不必要的拆分,至少我还没有找到方法。此外,这些特殊字段在一行内的位置可变,它们可以出现一次、两次、4次等。

我想到了一个涉及预解析步骤的解决方案,我;用某种代码替换这些字段中的。问题是sed/awk执行贪婪REGEX匹配。所以在上面的例子中,我只能;在每行中用引号括起来的最后一个字段内替换。

如何匹配每个引号实例并替换其中的具体实例;?我不想使用perlpython等。

0 投票
2 回答
93 浏览

php - 如何搜索彼此相邻的重复数字?

我正在尝试preg_match()在 PHP 中使用为具有此模式的 4 位数字进行模式匹配:

基本上前 2 位数字相同,后 2 位数字相同,但并非所有 4 位数字都相同。

preg_match()甚至可以使用正确的功能吗?还是我应该将它们分开并以这种方式匹配?