使用单个正则表达式捕获非重复和重复的组

时间:2018-12-19 22:25:37

标签: regex

使用的测试站点:https://regex101.com/

示例文字

Tag [key=AccountAlias, value=MyAccount, tagDefinition=default-tag-definition]

RegEx 0(非重复)

(\w+) \[(.*)\]

捕获

Group 1.    0-3 `Tag`
Group 2.    5-76    `key=AccountAlias, value=MyAccount, tagDefinition=default-tag-definition`

在这里,group1捕获一个'type',这里是'Tag'

RegEx 1(重复)

((\w*)=([a-zA-Z-_0-9]+))

捕获

Match 1
Full match  5-21    `key=AccountAlias`
Group 1.    5-21    `key=AccountAlias`
Group 2.    5-8 `key`
Group 3.    9-21    `AccountAlias`
Match 2
Full match  23-38   `value=MyAccount`
Group 1.    23-38   `value=MyAccount`
Group 2.    23-28   `value`
Group 3.    29-38   `MyAccount`
Match 3
Full match  40-76   `tagDefinition=default-tag-definition`
Group 1.    40-76   `tagDefinition=default-tag-definition`
Group 2.    40-53   `tagDefinition`
Group 3.    54-76   `default-tag-definition`

此处Group2捕获类型的属性,而Group3捕获该属性的值。

目前,我必须应用2个正则表达式。如何将RegEx 0和RegEx 1组合在一起以一次性提取“类型”及其属性。

如果我将我的正则表达式合并为

/(\w+) \[((\w*)=([a-zA-Z-_0-9]+))\]/g

没有匹配项,出了什么问题。进行一些解释会有所帮助..

0 个答案:

没有答案