UiPath中正则表达式匹配换行失效,无法提取发票公司名称如何解决?
原因分析
- 换行符适配问题:Windows系统默认换行符为
\r\n(两个连续字符),你原来写的正则(?<=To:[\n\r]).+的后视断言仅匹配单个\r或\n,剩下的一个换行符会被后续的.+匹配为空内容,无法命中下一行的公司名称。 - 正则引擎差异:你之前测试用的是JS正则引擎,UiPath底层用.NET正则引擎,二者对换行符、元字符的匹配规则存在细微差异。
- 额外格式干扰:你提供的原文本带有
<b>HTML标签,原有正则如果直接匹配会连带标签一起返回,也不符合你提取纯公司名的需求。
解决方法
1. 替换适配的正则表达式
根据你是否提前过滤HTML标签,二选一即可:
- 带HTML标签的原文本直接提取:
(?<=To:[\s\S]*?<b>)[^<]+
该表达式会自动跳过To:后的所有换行、空白字符,定位到<b>标签后提取直到下一个<前的内容,正好命中SOME ANALYTICS - 已清除HTML标签的纯文本提取:
(?<=To:\s*\r?\n\s*).+
该表达式适配\n和\r\n两种换行格式,自动忽略To:和换行前后的多余空白。
2. UiPath调用配置
如果你用Matches活动,不需要额外开启特殊配置,直接将上述正则填入Pattern字段即可;如果直接在Assign活动中调用,写法参考:
System.Text.RegularExpressions.Regex.Match(yourTextVar, "(?<=To:[\s\S]*?<b>)[^<]+").Value.Trim()
内容的提问来源于stack exchange,提问作者Sudarsh
相关产品推荐
相关产品推荐

