У меня есть строка, содержащая несколько ключевых слов со значениями, разделенными двоеточием (и, возможно, пробелом). Пары ключевое слово и значение сами по себе разделяются только пробелом (или вообще ничего).
Вот некоторые примеры:
"TAG1: asd asd testTAG2:TEST"
"TAG1:asd asd test TAG2:TEST"
"TAG1: asd asd test TAG2:TEST TAG1:hello"
Затем я использую это регулярное выражение для сопоставления (TAG1|TAG2): ?(.+)
, которое работает только при наличии одной пары тегов. Поэтому я попытался использовать положительный прогноз ((TAG1|TAG2): ?(.+)(?=TAG1|TAG2)
) для сопоставления до следующего вхождения, но это, очевидно, не работает, если у меня одна пара, и не работает, если у меня более двух пар.
Так что мне интересно, как вы можете разбить его на совпадения, которые затем имеют группу для имени тега и другую группу для значения:
"TAG1: asd asd testTAG2:TEST"
[["TAG1", "asd asd test"], ["TAG2", "TEST"]]
"TAG1:asd asd test TAG2:TEST"
[["TAG1", "asd asd test"], ["TAG2", "TEST"]]
"TAG1: asd asd test TAG2:TEST TAG1:hello"
[["TAG1", "asd asd test"], ["TAG2", "TEST"], ["TAG1", "hello"]]
Какая альтернатива предвидению есть, что не включает в матч? Я думаю, что здесь проблема, так как он пропускает следующий тег.