Представьте, что у нас длинная строка, содержащая подстроки «cat» и «dog», а также другие случайные символы, например.Проблема соответствия шаблонов строк
cat x dog cat x cat x dog x dog x cat x dog x cat
Здесь 'x' представляет любую случайную последовательность символов (но не 'cat' или 'dog').
Что я хочу сделать, это найти каждый «кот», за которым следуют любые символы, кроме «собака», а затем «кот». Я хочу удалить этот первый экземпляр «cat» в каждом случае.
В этом случае, я хотел бы, чтобы удалить квадратные скобки [кошку], потому что нет «собаки» после него до следующих «кошек»:
cat x dog [cat] x cat x dog x dog x cat x dog x cat
Чтобы закончить с:
cat x dog x cat x dog x dog x cat x dog x cat
Как это можно сделать?
Я думал как-то с помощью регулярного выражения, как (п) (? = (П)), как VonC рекомендуется here
(cat)(?=(.*cat))
соответствовать всем парам «кошки» в строке. Но я до сих пор не знаю, как я могу использовать это, чтобы удалить каждого кота, за которым не следует «собака» перед «кошкой».
Настоящая проблема, которую я решаю, - это Java. Но я действительно просто ищу общее решение псевдокода/регулярного выражения.
Привет. Было бы полезно узнать, на каком языке вы работаете. –
@klausbyskov: Вы уверены в том, что редактируете? Следующие два предложения и пример кажутся мне указанием на то, что «последовало» - это то, что он имел в виду. –
Я действительно имел в виду, что «следовало» не предшествовало! – nodmonkey