RegEx для сопоставления всего, кроме текста между двумя словами - PullRequest
3 голосов
/ 11 мая 2019

У меня есть текст:

«Быстрая коричневая лиса перепрыгивает через ленивую собаку»

и мне нужно сопоставить все, кроме текста между словом ипервое вхождение буквы после этого слова выглядит следующим образом (в данном случае между коричневым и первым вхождением «л»):

«Быстрая коричневая ленивая собака»

Я испробовал несколько возможных решений, но самое близкое совпадение, которое у меня есть в моей руке, как раз наоборот:

(?<=brown ).*?(?=l)

, что соответствует ", лиса перепрыгивает через"

РЕДАКТИРОВАТЬ:

Я использую инструмент Klipfolio и точный текст, который у меня есть, выглядит следующим образом:

["String1: value1","String2: value2","String3: value3"]

И я хочу сопоставить все, кроме value1, и заменить его пустой строкой.

Я использую функцию SUBSTITUTE_REGEX

Ответы [ 2 ]

2 голосов
/ 11 мая 2019

Как уже упоминалось, самый простой способ - заменить строку.

Чтобы сделать обратное более сложным и делается так:

Найти (.*?brown ).*?(l.*)|(.+)
Заменить $1$2$3

https://regex101.com/r/x8QW6r/1

0 голосов
/ 11 мая 2019

Вы можете просто использовать свой оригинальный шаблон и заменить соответствующую деталь пустой строкой "".

Альтернативный способ сделать это - создать две группы совпадений, которые затем можно объединить, чтобы получить желаемый результат:

(.*brown )(?:[^l]*)(.*)
Full match  0-43   The quick brown fox jumps over the lazy dog
Group 1.    0-16   The quick brown 
Group 2.    35-43  lazy dog

Демо

...