Я ищу решение регулярного выражения для замены подстроки с заданным динамическим шаблоном. Проблема в том, что подстрока может содержать известный токен, и мы не знаем, в какой позиции этот токен находится.
Я могу сформулировать проблему следующим образом: Заменить (заданный) шаблон в строке, даже если (известный) токен будет конфликтовать.
Предположим, у нас есть my_string :
Мне нравятся зеленые и PLUS голубые бобы!
PLUS представляет известный токен, который мы хотим игнорировать в случае, если он мешает совпадению.
У нас также есть переменный шаблон под названием my_pattern , который может быть любой частью my_string , за исключением PLUS , такой как:
1) зеленый и синий
2) зеленая и синяя фасоль
3) Мне нравится зеленый
Мы знаем, что PLUS может произойти где-то в my_string , и мы не знаем позицию. Теоретически, my_string также может быть:
I PLUS как зеленые и синие бобы!
Поскольку my_pattern может встречаться в формах 1), 2) или 3), мы также не можем жестко закодировать решение с помощью OR.
Искомое решение:
my_string .replace ( my_pattern , "red") с выводом для my_pattern:
1) Я люблю красную фасоль!
2) Мне нравится красный!
3) красная и ПЛЮС голубая фасоль!
my_pattern должны совпадать, хотя PLUS встречается в my_string (что может конфликтовать с my_pattern).
Это что-то вроде: сопоставить my_pattern и игнорировать PLUS в случае, если оно мешает совпадению.