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

Regex - capture all repeated iteration

我有一个这样的变量

var = "!123abcabc123!"

我正在尝试捕获此变量中的所有“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`

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

谢谢!!

如果您的语言支持\G那么您可以免费使用它。

(?:!|\G(?!^))\K(abc|123)(?=(?:abc|123)*!)

DEMO