Как удалить все, кроме второго вхождения символа, используя Regex?

У меня есть список, который выглядит примерно так:

xxxxx|xxxxxx|[email protected]
xxxxx|xxxxxx|[email protected]
xxxxx|xxxxxx|[email protected]

X может быть как буквой, так и цифрой, но не более того.

Я пытаюсь заменить все (включая символ) справа от второго |. Результат должен выглядеть так:

xxxxx|xxxxx

Я хочу сделать это с помощью регулярного выражения, чтобы заменить все вхождения в Notepad++.


person John    schedule 30.06.2011    source источник


Ответы (2)


Находить

^([^|]*|[^|]*)|.*$

Заменить

\1

Ссылка: http://www.scintilla.org/SciTERegEx.html

person Ed Staub    schedule 30.06.2011

Замените \|[^\|]+$ ничем.

Это будет соответствовать |[email protected], поэтому, если вы замените его пустой строкой, это приведет к тому, что вы хотите.

person daalbert    schedule 30.06.2011
comment
Это работает только в том случае, если что-либо после второго канала | не включает другой канал. - person Jonathan Leffler; 30.06.2011
comment
@ Джонатан, это правильно, но, согласно вопросу, вместо x будут только буквы или цифры, а затем будут @ и .. - person daalbert; 30.06.2011
comment
И у меня есть хороший мост в Бруклине, который я могу тебе продать :D - person Jonathan Leffler; 30.06.2011
comment
Я понимаю вашу точку зрения и верю в программирование с защитой, но вопрос был об очень конкретном сценарии с использованием функции замены текстового редактора. Иногда вам нужно охватить все возможные сценарии и быть начеку, но иногда вы выполняете разовую задачу, которая просто требует быстрого и простого решения... - person daalbert; 30.06.2011