Найти все электронные письма в файле в возвышенном тексте с помощью регулярных выражений и добавить запятую после каждого электронного письма - PullRequest
0 голосов
/ 12 марта 2019

У меня есть выражение, чтобы найти все электронные письма в моем файле, как показано ниже:

enter image description here

Теперь я хочу добавлять запятую после каждого электронного письма,

Я пробовал это, но это не работает

enter image description here

Какое выражение для получения результатов матча?

Я использую приведенное ниже выражение, чтобы найти электронные письма, которые отлично работают.

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

Ответы [ 2 ]

2 голосов
/ 12 марта 2019

Если ваше регулярное выражение соответствует тому, что вы хотите, все, что вам нужно сделать, чтобы добавить символ / строку после того, как он использует $0 обратную ссылку в шаблоне замены.

$0 относится ко всему совпадению.

Итак, вам нужно заменить на $0,, чтобы добавить запятую к каждому подобному электронному письму тексту, который соответствует вашему регулярному выражению.

2 голосов
/ 12 марта 2019

Для тех, кто может найти его / ее в такой ситуации, как безопасное, решение заключалось в том, чтобы заключить мое выражение регулярного выражения в квадратные скобки, как показано ниже, а затем использовать \1,

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

Заменить его следующим:

((?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]))

Очевидно, это как-то связано с Группой захвата , о которой я понятия не имел.

https://www.regular -expressions.info /refcapture.html

...