@Roman-Pace

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

Помогите, пожалуйста, создать регулярку, которая будет удалять текст в каждой строке между предпоследней кавычкой и любым из найденных ПОСЛЕДНИМ символов "o", "e" или "a". Т.е. другими словами мне нужно обработать значения ТОЛЬКО в последнем столбце таблицы, удалив текст в этом столбце до обозначенных выше букв.

Имеем:
"1";"First line";"000";"emar"
"2";"Second line";"010";"eig"
"3";"Third line";"010";"end5er"
"4";"Fourth line";"010";"orn"
"5";"Fifth line";"100";"em"

Должно получиться:
"1";"First line";"000";"ar"
"2";"Second line";"010";"ig"
"3";"Third line";"010";"er
"4";"Fourth line";"010";"orn
"5";"Fifth line";"100";"em"

В первой строке между последними кавычками есть и "e" и "a" - нас интересует именно последний символ, т.е. "a" - поэтому должно остаться только "ar"
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
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
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы