Как заменить n-й случай совпадения при использовании паттернов Look Ahead и Look Behind Regex - PullRequest
1 голос
/ 23 октября 2019

Я ищу способ замены некоторых путей к изображениям в коде с помощью функции регулярных выражений. В конечном счете, я буду использовать инструмент пакетной обработки текста под названием «TextCrawler» для выполнения этих подстановок, но на данный момент мне интересно узнать, как использовать совпадения регулярных выражений для указания конкретного вхождения. Я не смог получить никаких квантификаторов , чтобы позволить мне это сделать.

Я использую (?<=@heroImageURL = ").+(?=")|(?<=@productImageURL = ").+(?=") для замены путей к изображениям, и это регулярное выражение находит все пути к изображениям. Тем не менее, мне нравится знать, как нацелиться на n-й конкретный экземпляр значения конкретной переменной. В приведенном ниже примере у меня есть 2 разные переменные для каждого условия бренда. Когда я хочу заменить, я не хочу, чтобы каждая возможная переменная получала одно и то же значение, поэтому мне нужна помощь с применением специфичности.

Каждая переменная будет иметь разное значение в зависимости от brandName, и этот процесс будетитеративный по нескольким различным файлам, поэтому я хочу в конечном итоге поместить значения Find и Replacement, содержащие шаблон Regex и Substitution, в разделенный запятыми список, который я передам в TextCrawler для замены.

Вот мой regex101 link

IF @brandName == "A" THEN
   set @heroImageURL = "http://www.image.com/a9230239u230.jpg"
   set @productImageURL = "http://www.image.com/A29200923.jpg"
ELSEIF @brandName == "B" THEN
   set @heroImageURL = "http://www.image.com/b2389823u238.jpg"
   set @productImageURL = "http://www.image.com/B22392029.jpg"
ELSEIF @brandName == "C" THEN
   set @heroImageURL = "http://www.image.com/c23892389289.jpg"
   set @productImageURL = "http://www.image.com/C49309934.jpg"
ELSEIF @brandName == "D" THEN
   set @heroImageURL = "http://www.image.com/d23423892833.jpg"
   set @productImageURL = "http://www.image.com/D09349409.jpg"
ELSEIF @brandName == "E" THEN
   set @heroImageURL = "http://www.image.com/e22823889899.jpg"
   set @productImageURL = "http://www.image.com/E22092309.jpg"
ELSE
   set @heroImageURL = "http://www.image.com/e22823889899.jpg"
   set @productImageURL = "http://www.image.com/E22092309.jpg"
ENDIF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...