Notepad++正则匹配带转义尖括号的邮箱失败,求正确写法
解决Notepad++正则替换提取邮箱的问题
问题原因
你用的正则^(.*) \<(.*?)\>$匹配失败的核心问题:
- 错误给
&加了转义符\,&在正则里不是特殊元字符,不需要转义,这导致正则试图匹配\<而非文本里实际的< ^和$要求匹配整行内容,如果目标行前后有多余空格、换行或其他字符,也会导致匹配失败
正确替换步骤
1. 开启正则模式
打开替换窗口(快捷键Ctrl+H),左下角「搜索模式」选正则表达式,不要选「标准」或其他模式。
2. 匹配HTML实体格式(文本含</>)
如果你的文本确实是Joe Schmoe <joe.schmoe@gmail.com>这种带HTML实体的格式:
- 查找目标:
.*<(.*?)>- 解释:
.*匹配邮箱前的任意内容,<匹配实际的转义字符,(.*?)非贪婪捕获邮箱地址,>匹配结尾转义字符
- 解释:
- 替换为:
\1- 解释:
\1引用捕获到的邮箱分组内容
- 解释:
3. 匹配普通尖括号格式(文本含</>)
如果是输入时误写了HTML实体,实际文本是Joe Schmoe <joe.schmoe@gmail.com>:
- 查找目标:
.*<(.*?)> - 替换为:
\1
4. 精准匹配整行(可选)
要确保只替换完全符合「名字+空格+邮箱」格式的整行内容,可在正则前后加^和$:
- HTML实体版:
^.*<(.*?)>$ - 普通尖括号版:
^.*<(.*?)>$
测试效果
输入Joe Schmoe <joe.schmoe@gmail.com>,用对应正则替换后,结果就是joe.schmoe@gmail.com。
内容的提问来源于stack exchange,提问作者MollyInanna
相关产品推荐
相关产品推荐

