Подберите слова, разделенные запятой в строке, начинающейся с определенного ключевого слова - PullRequest
0 голосов
/ 27 января 2019

У меня есть следующий текст

type MyType1
type MyType2, MyType3
type MyType4,MyType5,MyType6, ...
NotMyType1, NotMyType2

Как мне сопоставить все эти разделенные запятыми * слова в строках, начинающихся с ключевого слова type , чтобы у меня было только то, что в концеare

MyType1
MyType2
MyType3
MyType4
MyType5
MyType6

Первоначально я пытался сопоставить все слова, разделенные запятыми (https://regex101.com/r/mQDCgX/1)

(?<=[,])(\w+)(?=[,])|(?<=[\s,])(\w+)(?=[,]|$)

, а затем попытался сгруппировать его и использовал lookbehind для совпадения type . Однако, это не сработало.

Примечание: * Запятая также может быть окружена пробелами

1 Ответ

0 голосов
/ 28 января 2019

Преобразование моего комментария в ответ.

Вы можете использовать это регулярное выражение:

(?:\btype|(?!^)\G,)\h*\K[^,\s]*
  • \G устанавливает позицию в конце предыдущего совпадения или в начале строки для первого совпадения.
  • (?!^) используется, чтобы убедиться, что мы не в начале
  • \K используется для сброса информации о матче

RegEx Demo

...