【问题标题】:REGEX '\K' is not working in RUTA but working in REGEX buidlerREGEX '\K' 不在 RUTA 中工作,但在 REGEX builder 中工作
【发布时间】:2019-11-19 18:26:39
【问题描述】:

我正在尝试使用以下 REGEX 从模式中提取最后 3 个字符,该模式在在线 REGEX 测试器中有效,但在 RUTA 中无效。

以下是我在在线 REGEX builder 中尝试过的代码: https://regex101.com/r/2JN9a5/1

以下是我在 RUTA 中尝试过的代码:

"(?i)\\b([QI]{2}|[Q])[\\s || -]{0,2}[0-9]{5,}[\\s || -]{0,2}\\K[A-Z]{3}\\b" -> EntityType;
  • 输入:Q-123456-PAD
  • Exp O/p:PAD

  • 输入:QI-1234567-PLB

  • Exp O/P:PLB

【问题讨论】:

  • 我猜鲁塔听不懂\K你有什么问题?
  • 好吧,我想从上面提到的模式中提取最后 3 个字符。我尝试使用 '\K' 这样做,但它在 RUTA 中不起作用。所以,只是想知道如何在不使用 '\K' 的情况下提取最后 3 个字符
  • 我不知道 ruta 语法,但我认为您可以创建一个组并选择该组,例如 blah blah -]{0,2}([A-Z]{3})\\\b" 您想要的值在第 1 组中

标签: regex uima ruta pega


【解决方案1】:

如果是Pega,那么试试这个

PACKAGE uima.ruta.example;

DECLARE VarA;
DECLARE VarB;
DECLARE VarC;


W{REGEXP("Q|QI") -> MARK(VarA)}
 (WS|"-")?  
  NUM{REGEXP(".{1,7}")-> MARK(VarB)}
 (WS|"-")?
  W{REGEXP(".{1,3}")-> MARK(VarC),MARK(EntityType,5,5), UNMARK(VarA), UNMARK(VarB), UNMARK(VarC)};

解释:-

(WS|"-")? :- 空格或“-”。如果其中一个已修复,您可以删除 ?

NUM{REGEXP(".{1,7}") :- 1 到 7 之间的数字。

W{REGEXP(".{1,3}") :- 大写字母 1 到 3。

MARK(EntityType,5,5) :- 仅标记第 5 行。即W{REGEXP(".{1,3}")。如果您标记MARK(EntityType,1,5),那么它将返回Q-123456-PAD

【讨论】:

  • 哇..非常感谢..它工作得很好...我正在尝试使用 RUTA 脚本为另一种模式编写类似的逻辑,但我无法得到它..你能帮忙吗我在那个? I/P - AB-A1BCADE3-PAD(第一个两个字母数字,后跟“-”或空格,然后是 7 个字母数字字符,然后是“-”或带 3 个字母的空格)O/P - PAD 我无法获得由于字母数字模式的确切输出。真的很有帮助,在此先感谢。
猜你喜欢
  • 2019-10-25
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 2011-09-25
  • 1970-01-01
相关资源
最近更新 更多