• Как сделать регулярное выражение для удаления текста между определёнными вхождениями в каждой строке?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    (;")([^"]*)([oea])([^oea;"]*")$

    Первая группа - точка с запятой и кавычка.

    Вторая группа - любое (даже ноль) количество символов, кроме самой кавычки. Очевидно, в этой группе могут быть (а могут и не быть) "o", "e" или "a", но они не будут последние. Если в эту группу включить последнюю "o", "e" или "a", то сформировать следующую группу не получится, поэтому регулярка так делать не будет.

    Третья группа символов чёткая - это один символ: "o", "e" или "a".

    Четвёртая группа символов - любое (даже ноль) количество символов, кроме "o", "e", "a", ";" и самой кавычки, за которым следует кавчка. Этой группой мы обозначаем, что предыдущая "o", "e" или"a" была именно последней и больше не должна встречаться.

    $ в конце означает конец строки. То есть все найденные группы должны идти именно в таком порядке и прилегать вплотную к концу строки. Во всех группах, кроме первой, исключена кавычка, что делает невозможных захват других сегметов строки.

    Очевидно, что заменить нужно на комбинацию из найденных групп. А именно, вторая группа лишняя. Точно не знаю, как это будет в Sublime. Что-то из этого должно сработать:
    • $1$3$4
    • \1\3\4
    Ответ написан
    9 комментариев