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

Kri*_*ian 1 regex regex-group blueprism

在 Blue Prism 中,我需要识别数据项(文本)的特定元素,以便稍后在我的流程中使用该信息。

\n\n

文本字符串如下:

\n\n
\n

REKVISITION_NR: 1234567 拿督: 23-07-2018 Rekvirent: ABC, DEF GHI, JKL 60, 8600 MNO Sted: JKL 60, 8600 MNO, Kl.:14:00:00, Bestilt_tid: 60 分钟 Tolkensnavn: PQR STU Koert_fra: VXY , 8600 Silkeborg Vedr.:Z CPR:123456-7890 Sprog:Arabisk 类型:Personlig fremm\xc3\xb8de Godkendt:24-07-2018

\n
\n\n

正如您所看到的,每个元素都具有以下特征(例如Kl. :14:00:00Sprog :arabisk):

\n\n
    \n
  • 字符串名称(以大写字母开头)
  • \n
  • 可选的句点字符 (.)
  • \n
  • 冒号字符 (:)
  • \n
  • 可选的,空格字符 ( )
  • \n
  • 字符串的值部分
  • \n
  • 空格字符 ( ),后跟下一个元素。
  • \n
\n\n

我相信我应该使用业务对象实用程序 - Strings \' 操作Extract Regex Values,但尚未成功匹配可以复制到命名值集合中的任何数据。\n但是,我发现这([A-Z])\\w+\\.?: ?(\\w(\\d\\-){0,3})+给我带来了一些匹配方式。\n我希望解决方案将字段名称和值复制到操作生成的命名值集合中。

\n\n

最后说明:我使用的是 Blue Prism 6.2.1,并且该操作的底层代码基于VB.net 的 Regex.Match 方法

\n

Mar*_*kal 5

您似乎缺少的是实际的命名组。要捕获 Blue Prism 集合中的值,您需要确保分配正确的组名称,如下所示:

(?<YourGroupName>[A-Z])
Run Code Online (Sandbox Code Playgroud)

这是您可以使用的正则表达式模式,尽管您需要验证它是否确实适用于所有可能的情况下的情况。

(?<Name>\b\S*?):\s(?<Value>.*?)\s*(?=(?:\b\S*?:\s)|$)
Run Code Online (Sandbox Code Playgroud)

您也可以在这里检查和测试。

编辑:但请注意,Blue Prism 用于将多个值提取到集合的原始代码几乎不可用,您最好修改它或创建自己的代码。例如,我期望这样的操作是一个集合,其中每一行都是一个模式匹配,每一列都是一个命名组。遗憾的是,默认操作并非如此。

编辑:在此输入图像描述