【发布时间】:2018-10-11 15:42:27
【问题描述】:
我正在尝试使用实体来匹配某些数据,而正则表达式似乎与 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,但都没有可靠的结果,并且经常得到完全相同的匹配,它将它分成组而不是比一场完整的比赛。
这是一个正则表达式问题吗?我尝试不对整个字符串进行分组,但似乎一直遇到完全相同的问题,它甚至找不到最后 3 个字母。
如果 Watson Assistant 使用不同的正则表达式引擎,是否有我无法找到的文档?他们似乎只是假设任何正常的正则表达式都可以工作,但跳过连字符是奇怪的行为。
【问题讨论】:
-
您的输入与
-分开。您应该查看有关如何使用字符串和正则表达式提取结果的相关文档。 -
@WiktorStribiżew 那么我应该逃避
-s 吗?所以正则表达式应该是: ([\w]{8}\-[\w]{4}\-[\w]{4}\-[\w]{4}\-[\w]{12}\ -[\w]{3}) 这似乎也没有捕获整个组 -
在字符类之外,您不应在任何正则表达式引擎中转义
-。只有在 Lua 模式中它必须转义。 -
好的,那么我将如何正确捕获 hypens 以使实体返回为 @id:83123e42-d9ad-a26a-b13f-b0ec91c7fedf-ABC ?
-
您的模式在
WA中对我来说可以正常工作@id.literal返回完整匹配的ID,@id.groups返回匹配的组 - 如果有定义的话。
标签: regex ibm-cloud ibm-watson watson-conversation