2015-08-13 3 views
1

У меня есть переменная, как этотRegex - захватить все повторялось итерации

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

Спасибо вам !!

+0

Это зависит от языка, который вы используете. Если это .NET, все захваченные тексты находятся в свойстве 'Captures'. –

ответ

5

Если ваш язык поддерживает \G, вы можете использовать его бесплатно.

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

DEMO

+0

Не могли бы вы объяснить, что делает это регулярное выражение. – snippster

+0

Вы можете увидеть объяснение с правой стороны в ссылке, которую я приложил .. Soorry, у меня есть работа .. –

+0

Хорошо, хорошо работает спасибо :) – snippster

Смежные вопросы