То, что вы ищете, действительно решаемо с помощью регулярных выражений, но имеет смысл, только если вы пытаетесь сделать это в нескольких файлах одновременно.
Кроме того, в этих файлах не должно быть электронных писем, так как электронные письма являются очень большой частью этого множества. шаблон регулярного выражения и почти всегда совпадает.
Здесь - это написанное мной регулярное выражение, которое, надеюсь, охватывает все возможные случаи.
Чтобы сделать это для нескольких файлов, я бы предложил использовать его с perl
, так как
perl -i -pe 's/(?<=[^_a-zA-Z])([_a-zA-Z][\w\._]*)@([_a-zA-Z][\w\._]*)(\1|(?=\s))/np.dot(\1, \2)/g'
-i
изменяет файл на месте