正则表达式 - 捕获所有重复的迭代

sni*_*ter 1 regex capturing-group

我有一个像这样的变量

var = "!123abcabc123!"
Run Code Online (Sandbox Code Playgroud)

我试图捕获此变量中的所有'123'和'abc'.

这个正则表达式(abc|123)检索我想要的但是......

我的问题是:当我尝试这个正则表达式时,!(abc|123)*!它只检索最后一次迭代.我该怎么做才能得到这个输出

MATCH 1
1.  [1-4]   `123`
MATCH 2
1.  [4-7]   `abc`
MATCH 3
1.  [7-10]  `abc`
MATCH 4
1.  [10-13] `123`
Run Code Online (Sandbox Code Playgroud)

https://regex101.com/r/mD4vM8/3

谢谢!!

Avi*_*Raj 6

如果您的语言支持,\G那么您可以自由使用它.

(?:!|\G(?!^))\K(abc|123)(?=(?:abc|123)*!)
Run Code Online (Sandbox Code Playgroud)

DEMO