如何编写REGEX提取Integromat解析器中指定字符串间的表单字段值
正则调整方案
问题原因
原有正则使用贪婪匹配.*,单行场景下会直接匹配到行尾,导致后续字段被吞噬无法正常拆分,分支匹配的写法也不支持同一行多字段连续提取。
调整后的正则表达式
(First Name|Last Name|Email|Guest Name|Number of Dinner Guests):\s*(.*?)(?=\s*(?:First Name|Last Name|Email|Guest Name|Number of Dinner Guests):|$|\[)
正则说明
- 首组预定义所有需要匹配的字段名,自动对应不同字段的匹配结果
:\s*匹配字段名后的冒号以及任意数量的空白字符.*?采用非贪婪模式捕获字段值,避免过度匹配- 末尾正向预查
(?=...)限定匹配终止条件:遇到下一个字段名开头、字符串结束或者示例中出现的[字符时就停止捕获,不会影响后续字段的匹配
匹配效果验证
针对你提供的测试字符串,匹配结果如下:
- First Name: Frank
- Last Name: McTester
- Email: mctesterxmas@rya.com
- Guest Name: Debby McTester Party Registration
- Number of Dinner Guests: 2
该正则兼容单行、多行混合的场景,不需要额外开启正则flag,可直接在Integromat的Regex解析器中使用。
内容的提问来源于stack exchange,提问作者r3po
相关产品推荐
相关产品推荐

