如何用正则表达式从邮件头提取发件人全名(Power Automate)
从邮件头提取带引号的发件人全名(Power Automate适用)
修正后的正则表达式
用这个正则可精准捕获引号内的发件人全名:
From:\s*"([^"]+)"\s*<
From:\s*匹配邮件头里的From:前缀,忽略其后任意空白字符"([^"]+)"核心匹配逻辑:[^"]+专门匹配双引号之间的所有内容(不会包含引号本身),通过捕获组()提取目标全名\s*<匹配引号后的空白字符和左尖括号,确保匹配位置准确,避免误抓无关内容
Power Automate 具体用法
在Power Automate中通过表达式调用正则匹配提取内容:
- 假设你已获取邮件头内容并存储在变量或输出中,比如
outputs('Get_Message_Headers') - 使用以下表达式提取全名:
first(matches(outputs('Get_Message_Headers'), 'From:\s*"([^"]+)"\s*<'))[1]
matches()执行正则匹配,返回所有匹配结果的数组first()取数组第一个匹配项(邮件头仅含一个From字段)[1]提取匹配结果的第一个捕获组内容,即引号内的全名
原正则问题分析
你之前使用的From:\s*(.*[^\s])\s*<\s*(.*[^\s])\s*>存在两个关键问题:
.*是贪婪匹配,会把双引号也包含进结果,导致提取内容带引号- 未限定匹配范围,若邮件头存在干扰字符,可能匹配到错误内容
内容的提问来源于stack exchange,提问作者Faris AL-Otaibi
相关产品推荐
相关产品推荐

