Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在Blue Prism中提取正则表达式值(正则表达式匹配)_Regex_Regex Group_Blueprism - Fatal编程技术网

Regex 在Blue Prism中提取正则表达式值(正则表达式匹配)

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

在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):

  • 字符串名称(以大写字母开头)
  • (可选)句点字符(.)
  • 冒号字符(:)
  • (可选)空格字符()
  • 字符串的值部分
  • 空格字符(),后跟下一个元素
我认为我应该使用业务对象实用程序-Strings的操作提取正则表达式值,但未能成功匹配任何可以复制到命名值集合中的数据。 然而,我发现,
([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,我建议您选择第一个选项,如果传入的数据是