Фильтрация URL с использованием регулярного выражения: найти первый экземпляр только строки, но не тогда, когда перед ней стоит префикс другой конкретной строки - PullRequest
1 голос
/ 04 февраля 2020

Мне нужно иметь возможность идентифицировать первые экземпляры контента в URL, но не те, которые содержат wwwroot до этого первого экземпляра. Я не хочу, чтобы он находил какие-либо последующие экземпляры контента и нуждался во всех его аспектах без учета регистра.

, т. Е. Ему нужно найти первый контент только по следующим URL:

https://localhost/dfkdfjkdfjkdfkj/Content/dfdfdfdf.png
https://localhost/wwwrootExtra/Content/dfdfdfdf.png
https://localhost/dfkdfjkdfjkdfkj/ConTent/Images/ConTent/Patrol.png

и не найти экземпляры контента в этих URL-адресах:

https://localhost/MangoTrunkDebug/wwwRoot/ConTent/dffddf.png
https://localhost/MangoTrunkDebug/wwwRoot/ConTent/Images/ConTent/Patrol.png

Я дошел до этого, но сейчас изо всех сил:

(?<!(?i)\/wwwroot)\/(?i)Content\/

Это по-прежнему выбирает содержимое за пределами первого экземпляра.

Помощь будет принята с благодарностью.

Используется: https://regex101.com/

1 Ответ

0 голосов
/ 04 февраля 2020

Вы получаете 2 совпадения, потому что утверждение (?<!(?i)\/wwwroot) допустимо в обоих сценариях ios.

Один из вариантов может состоять в том, чтобы не соответствовать /wwwroot/ или /Content/ до сопоставления /Content/ и захватить Первое вхождение в группу захвата.

Вы можете включить без учета регистра на инструменте или языке программирования или добавить (?i) к шаблону.

^https?://(?:(?!/(?:wwwroot|Content)/).)*/(Content)/
  • ^ Начало строка
  • https?:// Соответствует http-части
  • (?: Группа без захвата
    • (?!/(?:wwwroot|Content)/).)* Соответствует любому символу, за которым непосредственно следует wwwroot или содержимое
  • /(Content)/ Совпадение /, захват содержимого в группе 1 и совпадение /

Regex demo

Другой вариант - использовать квантификатор в виде взгляда , если он поддерживается .

(?<!.*(?:/(?:wwwRoot|ConTent)/.*))(?<=/)Content(?=/)

Regex demo

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