正则表达式需求:提取收件人姓名后的第一个单词(ECMA规范)
正则优化方案
要只提取“Recipient Name:”后的第一个单词,问题出在你原来用的(.*)是贪婪匹配,会把冒号后到SKU前的所有内容都捕获。可以用以下两种优化方式:
最简洁的写法:
/(?<=Recipient Name: )\S+/gm这里的
\S+会匹配一个或多个非空白字符,刚好对应第一个名字单词,直接精准捕获到Tracy。如果需要确保匹配内容后面确实跟着SKU(避免文本结构变化时误匹配),可以加上正向预查:
/(?<=Recipient Name: )\S+(?= .*SKU)/gm这个写法会先匹配冒号后的第一个非空白单词,同时验证后面存在SKU相关内容,适配更复杂的文本场景。
内容的提问来源于stack exchange,提问作者Tracy Au-Yeung
相关产品推荐
相关产品推荐

