Regex XSLT,使用正则表达式从xml中提取子字符串

Regex XSLT,使用正则表达式从xml中提取子字符串,regex,xslt,Regex,Xslt,我试图在SVN日志上应用XSLT,我需要从提交消息中提取错误号。我在msg上应用这个正则表达式,但没有得到任何回报。我在XSLT中遗漏了什么? 先谢谢你 下面是我从SVN获得的XML: 数据记录设备 2015-04-13T02:35:25.246150Z 修改代码 厕所 2015-04-13T14:10:20.987159Z 修正了DESK-1868的错误 罗恩 2015-04-13T14:24:57.475711Z WEBAPP-1868托盘列表和设置对话框所选选项卡索引的修复 注意:因

我试图在SVN日志上应用XSLT,我需要从提交消息中提取错误号。我在msg上应用这个正则表达式,但没有得到任何回报。我在XSLT中遗漏了什么? 先谢谢你 下面是我从SVN获得的XML:

数据记录设备
2015-04-13T02:35:25.246150Z
修改代码
厕所
2015-04-13T14:10:20.987159Z
修正了DESK-1868的错误
罗恩
2015-04-13T14:24:57.475711Z
WEBAPP-1868托盘列表和设置对话框所选选项卡索引的修复
  • 注意:因为regex属性是属性值模板,所以正则表达式中的花括号必须加倍。对于 例如,要匹配一到五个字符的序列,请编写
    regex=“.{1,5}}”
    。对于包含许多卷曲的正则表达式 括号使用诸如
    regex=“{'[0-9]{1,5}[a-z]{3}[0-9]{1,2}'}”
    ,或使用变量

  • 您不希望在表达式末尾使用
    $
    将表达式锚定到行的末尾。否则,正则表达式将仅在消息以问题ID结尾时匹配

  • 使用此正则表达式捕获整个bug编号:

    regex="((DESK|TRS|PEK|WEBAPP)-\d{{4}})"
    

    我更改了版本,但仍然没有为该字段返回任何内容。您需要在正则表达式中加倍您的
    {}
    regex=“(DESK | TRS | PEK | WEBAPP)-\d{4}$”
    。(不确定为什么要使用
    $
    来匹配字符串的结尾。它只会在第二个日志条目上返回类似的内容。)此外,请确保您使用的是XSLT 2.0处理器。double{}帮助,我现在使用的是XSLT 2.0。结果我看到了桌面。不要使用
    regex-group()
    ,而是使用
    。请参阅我之前评论中的链接。它返回你想要的。几乎可以工作了。。。当我根据一个字符串测试正则表达式时,我得到了WEBAPP-1868,但是当我在XSL中使用它时,我只得到WEBAPP,你想要这个数字还是整个bug ID?只需调整正则表达式,将捕获组的括号中包含您想要的内容。在你的问题中指定想要的结果很有帮助。我想要WEBAPP-1868。加上括号后,我得到了我想要的东西。非常感谢。