Jira Service Management自动化匹配首个Traceback及正则转义方法
Jira Service Desk 正则匹配Traceback问题解决方案
匹配需求
匹配文本中第一个Traceback:实例,且捕获被大括号{}包裹的该Traceback:及下一行内容,目标匹配段示例:
{Traceback:
TypeError : stat() argument 1 must be encoded string without null }
原有正则问题分析
你使用的{{issue.description.match("(Traceback:[\s\n\r]\*[^\r\n].*)")}}存在两个核心错误:
- 误写
\*,该规则会匹配字面量星号,而非你预期的任意数量字符 - 未匹配包裹用的大括号边界,也没有限制取第一个实例的规则,匹配范围不符合需求
正确匹配正则
{{issue.description.match("(?:^|[\s\S]*?)\\{Traceback:\r?\n([^}]*)\\}")}}
规则说明:
(?:^|[\s\S]*?):非捕获组,跳过第一个目标段之前的所有内容,确保只匹配第一个Traceback:实例\\{Traceback:\r?\n:匹配字面量左大括号+Traceback:+换行,大括号为正则特殊字符,需要加双反斜杠转义([^}]*):捕获大括号内的所有内容,直到遇到右大括号停止\\}:匹配字面量右大括号结束匹配
Jira正则斜杠转义规则
- 正斜杠
/不属于Jira Java正则引擎的特殊字符,无需转义直接写入规则即可 - 反斜杠
\需要两层转义:Jira表达式语法层转义一次、正则引擎层转义一次,因此匹配单个字面量反斜杠需要写四个反斜杠\\\\;如果是用来转义正则特殊字符(如大括号、点、星号),写两个反斜杠\\即可
内容的提问来源于stack exchange,提问作者Robert Munoz
相关产品推荐
相关产品推荐

