Power Automate Desktop中基于Demand反向匹配指定千位分隔数字的正则表达式求助
Power Automate Desktop中基于Demand反向匹配指定千位分隔数字的正则表达式求助
嗨,我完全懂你的困扰——那些动态变化的字段长度和内容确实会让正向匹配的正则直接失效,从Demand行反向定位目标数字绝对是个精准的思路!
先再明确下你的输入文本场景:
Days of
Service
Electric 0156887974 02/24/23 60,170 01/24/23 58,149 1 2,021 31
Demand 0156887974 02/24/23 9.62 01/24/23 10.39 1 9.62 31
MESSAGE from KUA
你要找的是Demand行的上一行中,倒数第二个符合x,xxx格式的数字(这里是2,021),而且不管前面的动态内容怎么变,只要这个数字后面跟着一个数字+换行+Demand开头的行,就能匹配到。
给你这个针对性的正则表达式:
(\d{1},\d{3})\b(?=\s+\d+\s*\r?\nDemand\b)
正则逻辑拆解:
(\d{1},\d{3}):核心捕获组,专门匹配1位数字+逗号+3位数字的目标格式(完全符合你说的4位字符带逗号的要求)\b:单词边界,确保我们匹配的是完整的数字词,不会和前后的字符粘连(?=\s+\d+\s*\r?\nDemand\b):正向预查(关键的反向定位逻辑),确保当前匹配的数字后面满足:\s+:至少一个空格\d+:该行最后一个数字(比如示例里的31)\s*:兼容换行前可能存在的多余空白\r?\n:适配Windows和其他系统的换行符格式Demand\b:精准锁定下一行以Demand开头的单词,确保匹配的是目标行
在Power Automate Desktop里的使用步骤:
- 添加Extract text with regex动作
- 把你的输入文本填入
Input text字段 - 将上面的正则粘贴到
Regular expression框中 - 如果你只需要这一个匹配结果,不用勾选
Extract all matches - 运行后,捕获组的结果(也就是目标数字)会被存储到指定变量里,直接调用即可
这个正则完全不受前面动态内容的影响,只要Demand行和目标数字的位置关系不变,就能稳定匹配到你要的值~
备注:内容来源于stack exchange,提问作者Shaikh Mohammad Zulqarnain
相关产品推荐
相关产品推荐

