Watson Assistant用什么来检查正则表达式?

时间:2018-10-11 15:42:27

标签: regex ibm-cloud ibm-watson watson-conversation

我正在尝试使用实体来对某些数据进行匹配,而正则表达式似乎与Python中的其他类似引擎甚至regexr.com之类的站点并不十分匹配。这里有一些例子:

模式:([\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12}-[\w]{3})

要匹配的字符串样式:83123e42-d9ad-a26a-b13f-b0ec91c7fedf-ABC

但是,当进行测试时,它得到:

@id:83123e42

@id:d9ad

@id:a26a

@id:b13f

@id:b0ec91c7fedf

@id:ABC

我尝试使用字符串定界符对整个字符串进行分组,使用连字符转义连字符,使用.{4}-而不是\ w,但是都没有得到可靠的结果,并且经常得到完全相同的匹配,将其拆分为组而不是一场完整比赛。

这是正则表达式问题吗?我尝试不对整个字符串进行分组,但是似乎一直遇到完全相同的问题,无论如何它甚至都找不到最后三个字母。

如果Watson Assistant使用其他正则表达式引擎,那么有没有我找不到的文档所在的地方?他们似乎只是假设任何正常的正则表达式都可以使用,但是跳过连字符是一种奇怪的行为。

2 个答案:

答案 0 :(得分:1)

最终从Slack频道的一位出色助手那里找到了更直接的答案:

事实证明Watson助手Regex中的某些内容无法识别连字符。

他最终与我一起工作,并向我展示了一些SpEL,我已将它们分配给可以使用的上下文变量。

"<? input.text.extract('(\\w{8}\\-\\w{4}\\-\\w{4}\\-\\w{4}\\-\\w{12}\\-\\w{3}[^\\w]+)', 0) ?>"

答案 1 :(得分:0)

引用Watson Assistant docs for defining entities,这里是相关部分:

  

正则表达式引擎宽松地基于Java正则表达式   表达引擎。 Watson Assistant服务将产生错误   如果您尝试通过API或   从Watson Assistant服务Tooling UI中。

该部分包含有关限制以及应考虑的内容的一些信息  编写正则表达式时。被引用的最重要的是:

  

实体模式可能不包含:
  -正重复(例如x*+
  -反向引用(例如\g1
  -条件分支(例如(?(cond)true)