Я просмотрел несколько вопросов здесь, и я приблизился к получению ответа, однако некоторые из них делают полную противоположность того, что мне нужно, чтобы они делали. Это на самом деле хороший знак, поскольку он показывает, что я делаю некоторые успехи.
Что я пытаюсь сделать, это сделать массивный список адресов электронной почты из базы данных, которую я нашел. Каждая строка содержит произвольный текст до и после адресов электронной почты, для которых у меня нет практического применения, и я хотел бы избавиться от них, чтобы у меня был чистый список адресов электронной почты.
Каждая строка выглядит примерно так: (Мне пришлось подвергать цензуре некоторую информацию)
3e:visito****@hotmail.com:88.247.216.***:s*****1
Каждая строка в точности такая, и мне нужен способ удалить все до и после того, что помечает регулярное выражение.
В этот вопрос, я нашел регулярное выражение, которое выбирает все электронные письма отлично.
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b
Я просмотрел несколько вопросов здесь, и я приблизился к получению ответа, однако некоторые из них делают полную противоположность того, что мне нужно, чтобы они делали. Это на самом деле хороший знак, поскольку он показывает, что я делаю некоторые успехи.
Что я пытаюсь сделать, это сделать массивный список адресов электронной почты из базы данных, которую я нашел. Каждая строка содержит произвольный текст до и после адресов электронной почты, для которых у меня нет практического применения, и я хотел бы избавиться от них, чтобы у меня был чистый список адресов электронной почты.
Каждая строка выглядит примерно так: (Мне пришлось подвергать цензуре некоторую информацию)
3e:visito****@hotmail.com:88.247.216.***:s*****1
Каждая строка в точности такая, и мне нужен способ удалить все до и после того, что помечает регулярное выражение.
В этот вопрос, я нашел регулярное выражение, которое выбирает все электронные письма отлично.
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b
Кроме того, на этот вопрос, который я нашел что-то, чтобы положить в Заменить поле Notepad ++, и он удаляет электронные письма и оставляет все, кроме электронных писем. Итак, по сути, мне нужно что-то, что делает прямо противоположное этому.
Кроме того, есть около 10 миллионов строк (База данных 844 МБ) пройти, поэтому он должен быть в основном автоматизированным и простым, чтобы сэкономить время.
Заранее спасибо.
Техника, которая может вам помочь, состоит из двух шагов:
во-первых, вы должны поместить свое регулярное выражение внутри (?s)^.*?(YOUR_REGEX)[^\n]*
(введите его в Найти то, что поле), и используйте \1
(обратная ссылка на текст, захваченный с вашим исходным рисунком) в Заменить поле.
затем вручную удалите ненужный текст.
Итак, в вашем случае используйте
(?s)^.*?(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b)[^\n]*
Оптимизация это немного (учтите, что [A-Za-z0-9_]
можно заменить на \w
здесь), вы можете использовать следующее регулярное выражение с . matches newline
опция ВКЛ:
^.*?(\b[\w.%+-]+@[\w.]+\.\pL{2,4}\b)[^\n]*
объяснение:
^
— начало строки в Notepad ++.*?
— любые символы, ноль или более вхождений, как можно меньше до границы первого слова(\b[\w.%+-]+@[\w.]+\.\pL{2,4}\b)
— ваш согласование шаблон внутри пары неэкранированных скобок, чтобы захват сохранялся в буфере:
\b
— граница слова[\w.%+-]+
— 1 или более словосочетаний (буквы, цифры или подчеркивание)@
— а @
условное обозначение[\w.]+
— 1 или более словосочетаний или .
\.
— одна точка\pL{2,4}
— от 2 до 4 букв\b
— конечная граница слова[^\n]*
— 0 или более символов, кроме новой строкиКак указано в комментарии @stribizhev, Мне нужно сделать следующее:
1: Добавьте следующее регулярное выражение в Найти то, что коробка:
(?s)^.*?(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b)[^\n]*
2: Добавьте следующее к Заменить коробка:
\1
И это все! Спасибо всем большое!
Если ваш файл отформатирован и отделен :
, может быть, это регулярное выражение работает лучше для вас:
[^:]*:([^:]*):.*
и заменить его на
\1
Таким образом, вы можете получить преимущества для ваших сепараторов.
Проверьте Вот