这可以使用正则表达式模式(捕获组)吗?
Can this do-able using regular expressions patterns (capture groups)?
在 JS 中,我有一组字符串需要分解成一个数组。每个字符串最多可以细分为 5 组(有些更少)。我正在使用正则表达式来打破所有。
下面的字符串集中如果包含aa
bb
或者cc
需要进入捕获组2.
不幸的是,我对正则表达式不是很熟悉,所以卡在了这里。
这个模式只能使用正则表达式吗,还是我必须打破从 ::
到 |
并在以后展开它?
我的正则表达式模式 ^[ \t]*(?:(?:(\w+)\|)?(?:(\w+):(?:(\w+):)?)?)?(\w+)::(\w+)$
DEMO
字符串集(JS 循环中的每一行 运行):
group4::group5
aa:group4::group5
bb:group4::group5
cc:group4::group5
group1|group4::group5
group1|aa:group4::group5
group3:group4::group5
aa:group3:group4::group5
group1|group3:group4::group5
group1|aa:group3:group4::group5
最后的结果应该可以出这个...
var groups = {1:"group1", 2:"group2", 3:"group3", 4:"group4", 5:"group5"};
如果有人可以帮助我,正则表达式模式就足够了
您可以使用此 PCRE 正则表达式,其中包含一个 分支重置组 、5 个独立的捕获组、少量可选匹配项和非捕获组:
^\h*(?:(?:(\w+)\|)?(?|(?:(aa|bb|cc):(?:(\w+):)?)|(?:((?2)):)?(\w+):)?)?(\w+)::(\w+)$
PS:分支重置组在 Javascript 中不起作用。
在 JS 中,我有一组字符串需要分解成一个数组。每个字符串最多可以细分为 5 组(有些更少)。我正在使用正则表达式来打破所有。
下面的字符串集中如果包含aa
bb
或者cc
需要进入捕获组2.
不幸的是,我对正则表达式不是很熟悉,所以卡在了这里。
这个模式只能使用正则表达式吗,还是我必须打破从 ::
到 |
并在以后展开它?
我的正则表达式模式 ^[ \t]*(?:(?:(\w+)\|)?(?:(\w+):(?:(\w+):)?)?)?(\w+)::(\w+)$
DEMO
字符串集(JS 循环中的每一行 运行):
group4::group5
aa:group4::group5
bb:group4::group5
cc:group4::group5
group1|group4::group5
group1|aa:group4::group5
group3:group4::group5
aa:group3:group4::group5
group1|group3:group4::group5
group1|aa:group3:group4::group5
最后的结果应该可以出这个...
var groups = {1:"group1", 2:"group2", 3:"group3", 4:"group4", 5:"group5"};
如果有人可以帮助我,正则表达式模式就足够了
您可以使用此 PCRE 正则表达式,其中包含一个 分支重置组 、5 个独立的捕获组、少量可选匹配项和非捕获组:
^\h*(?:(?:(\w+)\|)?(?|(?:(aa|bb|cc):(?:(\w+):)?)|(?:((?2)):)?(\w+):)?)?(\w+)::(\w+)$
PS:分支重置组在 Javascript 中不起作用。