Соответствие регулярному выражению должно останавливаться при первом появлении расширения файла и игнорировать остальные - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь создать запрос регулярного выражения, который будет искать файлы изображений и игнорировать поиск в подкаталогах.

Проверить следующие строки

/content/dam/dev-img-test-folder/huehuehue.gif/jcr:content/renditions/cq5dam.thumbnail.140.100.png

/content/dam/someotherdirectory/nonoono.gif/jcr:content/renditions/cq5dam.thumbnail.140.100.png


/content/dam/dev-img-test-folder/huehuehue.jpg
/content/dam/some-directory/nononoono.jpg

Регулярное выражение должно обнаруживать толькопоследние две строки.Я попытался с /content/dam.*.(jpg|JPG|png), но все четыре из них получаются.

Может кто-нибудь направить меня сюда в правильном направлении?Спасибо.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Когда ваши данные имеют четкий разделитель, например /, в этом случае вы можете использовать [^...]+, чтобы получить все , кроме этого символа.Что чрезвычайно полезно для ограничения глубины поиска, если вы используете его вместе с $.

. В вашем случае \/content\/dam\/[^\/]+\/[^\/]+\.(jpg|JPG|png)$ будет работать.Кроме того, регулярные выражения часто не чувствительны к регистру.Вам может не понадобиться JPG в вашей строке.

https://regex101.com/r/gGvRw3/2/

0 голосов
/ 22 мая 2018

/content/dam/[^/]*/[^/]*(jpg|JPG|png)$ будет сопоставлять все файлы, заканчивающиеся (из-за $) с jpg|JPG|png в любом подкаталоге дамбы.

Если вы ищете переменное количество подкаталогов, это будет другое регулярное выражение.

.*\.(jpg|JPG|png)$ должен соответствовать любой строке, заканчивающейся jpg|JPG|png.

/([^/]*/){2,5}[^/]*(jpg|JPG|png)$ будет соответствовать любому файлу глубиной от 2 до 5 подкаталогов.Вам может потребоваться экранировать скобки в зависимости от механизма / синтаксиса регулярных выражений.

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