Regex 在Blue Prism中提取正则表达式值(正则表达式匹配)
在Blue Prism中,我需要识别数据项(文本)的特定元素,以便在以后的过程中使用这些信息 文本字符串如下所示: 修订编号:1234567 Dato:23-07-2018修订编号:ABC,DEF GHI,JKL 608600 MNO Sted:JKL 608600 MNO,Kl:14:00:00,Bestilt_tid:60 min Tolkensnavn:PQR STU Koert_fra:VXY,8600 Silkeborg Vedr.:Z CPR:123456-7890 Sprog:Arabisk类型:Personlig fremmøde Godkendt:24-07-2018 如您所见,每个元素都有以下特征(例如Kl.:14:00:00或Sprog:Arabisk):Regex 在Blue Prism中提取正则表达式值(正则表达式匹配),regex,regex-group,blueprism,Regex,Regex Group,Blueprism,在Blue Prism中,我需要识别数据项(文本)的特定元素,以便在以后的过程中使用这些信息 文本字符串如下所示: 修订编号:1234567 Dato:23-07-2018修订编号:ABC,DEF GHI,JKL 608600 MNO Sted:JKL 608600 MNO,Kl:14:00:00,Bestilt_tid:60 min Tolkensnavn:PQR STU Koert_fra:VXY,8600 Silkeborg Vedr.:Z CPR:123456-7890 Sprog:Ar
- 字符串名称(以大写字母开头)
- (可选)句点字符(.)
- 冒号字符(:)
- (可选)空格字符()
- 字符串的值部分
- 空格字符(),后跟下一个元素
([A-Z])\w+\.?:?(\w(\d\-){0,3})+
在匹配方面给我带来了一些方法。
我希望解决方案将字段名和值复制到操作生成的命名值集合中
最后提示:我使用的是Blue Prism 6.2.1,操作的底层代码基于。您似乎缺少的是实际命名的组。要捕获Blue Prism集合中的值,需要确保指定正确的组名,如下所示:
(?<YourGroupName>[A-Z])
(?[A-Z])
这里是您可以使用的regex模式,尽管您需要验证它是否真的适用于所有可能的场景
(?<Name>\b\S*?):\s(?<Value>.*?)\s*(?=(?:\b\S*?:\s)|$)
(?\b\S*?):\S(?.*?)\S*(?=(?:\b\S*?:\S)|$)
您还可以检查和测试它
编辑:但请注意Blue Prism用于将多个值提取到集合的原始代码几乎不可用,您最好修改它或创建自己的值。例如,我期望从这样一个操作中得到的是一个集合,其中每一行都是一个模式匹配,每一列都是一个命名组。遗憾的是,默认操作不是这样工作的
编辑:您似乎缺少的是实际命名的组。要捕获Blue Prism集合中的值,需要确保指定正确的组名,如下所示:
(?<YourGroupName>[A-Z])
(?[A-Z])
这里是您可以使用的regex模式,尽管您需要验证它是否真的适用于所有可能的场景
(?<Name>\b\S*?):\s(?<Value>.*?)\s*(?=(?:\b\S*?:\s)|$)
(?\b\S*?):\S(?.*?)\S*(?=(?:\b\S*?:\S)|$)
您还可以检查和测试它
编辑:但请注意Blue Prism用于将多个值提取到集合的原始代码几乎不可用,您最好修改它或创建自己的值。例如,我期望从这样一个操作中得到的是一个集合,其中每一行都是一个模式匹配,每一列都是一个命名组。遗憾的是,默认操作不是这样工作的
编辑:这些字段是否总是以相同的顺序出现?是的,您可以假设,@esqew。但是我希望有一些通用的东西。我创建了一个regex对象,我使用它来代替标准对象。你可以在这里找到一个副本:这些字段是否总是以相同的顺序出现?是的,你可以假设,@esqew。但是我希望有一些通用的东西。我创建了一个regex对象,我使用它来代替标准对象。你可以在这里找到一份:谢谢!这是朝着正确的方向迈出的一大步。但我仍然无法让它将名称和值传递给集合。我尝试过使用没有数据的集合,以及类似于regex组()的初始值。两者似乎都不起作用。你能给我提供你的集合和正则表达式操作的屏幕截图吗?你需要在集合初始值(组名)中输入“名称”而不是文本值。然而,这也有缺点,因为它只会给你第一场比赛。要实现您想要的功能,您需要修改.NET代码,使用一个严格且不太通用的正则表达式模式,或者使用一个过度的BP进程逻辑来动态生成一些模式并循环以获得每个匹配。如果你能使用一点.NET,我建议你使用第一种方法,如果传入数据的结构相同,那么就使用第二种方法。是的,Blue Prism显然没有很好地实现这一功能,@Marek Stejskal说。我仍然找不到任何东西。动作和集合如下所示:(动作的输入)(动作的输出)(集合的初始值)(集合的当前值-注意,名称regex组被设置为集合中的一个值)您是否可以提供类似的屏幕截图(可能将它们添加到上面的答案中)?我可能会将我的正则表达式组命名为“Name”和“Value”,这让它稍微更混乱一些。我添加了一张图片以使用法更清楚。请注意,此操作仅返回单个(第一个)匹配项。谢谢!这是朝着正确的方向迈出的一大步。但我仍然无法让它将名称和值传递给集合。我尝试过使用没有数据的集合,以及类似于regex组()的初始值。两者似乎都不起作用。你能给我提供你的集合和正则表达式操作的屏幕截图吗?你需要在集合初始值(组名)中输入“名称”而不是文本值。然而,这也有缺点,因为它只会给你第一场比赛。要实现您想要的功能,您需要修改.NET代码,使用一个严格且不太通用的正则表达式模式,或者使用一个过度的BP进程逻辑来动态生成一些模式并循环以获得每个匹配。如果您可以使用.NET,我建议您选择第一个选项,如果传入的数据是