Регулярное выражение для захвата путей, содержащих ключевые слова - PullRequest
1 голос
/ 05 августа 2020

У меня есть строка, которая выглядит как

/home/user/one.jar:/home/user/two.jar:/home/user/three.jar:/home/user/four.jar

как мне написать регулярное выражение для сопоставления путей, содержащих «two.jar» или «three.jar», чтобы я мог фильтровать позже, чтобы получить

home/user/one.jar:/home/user/four.jar?

Я пробовал ^:.*(two|three)\.jar:$, чтобы в основном сказать

  1. Соответствует любой строке, которая начинается с :
  2. Имеет любое количество символов между ними (для соответствия таким путям, как /home/user/
  3. Соответствует либо "two.jar", либо "three.jar"
  4. Заканчивается на :

но я не думаю, что подхожу к этому правильно

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Получил работать с

(^|:)([^:]*(two|three)\.jar)

0 голосов
/ 05 августа 2020

Принимая это как формулировку вашей проблемы: :/home/user/one.jar:/home/user/two.jar:/home/user/three.jar:/home/user/four.jar

И это как ваше необходимое решение: home/user/one.jar:/home/user/four.jar

Я написал этот фрагмент регулярного выражения, который поможет вам: (:.+?(?:two|three)\.jar)

Это даст вам

:home/user/two.jar в Match 1 Group 1

:/home/user/three.jar в Match 2 Group 1

Вот ссылка regex101 на решение : https://regex101.com/r/DQMgkg/2

Надеюсь, помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...