1

所以我试图从 TFS 中的变更集注释中提取缺陷编号。但是,人们输入数字的方式有多种:

  1. "Defect 1321: blah blah blah"
  2. "Fixes HPQC 1427. Logic modified"
  3. "- Bug 976 - Customer"

我不擅长正则表达式,所以任何帮助都会很棒。#我通过降低它并去掉and来提前准备字符串.,所以我可以确定我正在寻找以(defect|hpqc|bug)可选空格 ( \s) 开头的字符串,然后是数字 ( \d),然后以空格 ( \s) 结尾,但这并没有不行:

(defect|hpqc|bug)\s\d\s

我只想找到第一个匹配项。我想提取数字分量,但前提是前一个单词是匹配的。

我确信这是我对正则表达式创建的琐碎知识的结果。

4

4 回答 4

2

大小写很重要(通常),并且您需要多个数字\d+,并且还有一个可选的数字符号,因此这样的事情应该可以工作,具体取决于您的系统:

(Defect|HPQC|Bug)\s*#?\s*(\d+)

这允许在数字之前有空格和#/或两者都没有,并捕获数字。了解您是否使用 python 或其他东西会有所帮助(标记您的问题)。

于 2013-11-13T16:19:28.470 回答
1

我相信这个正则表达式应该适合你:

(?:defect|hpqc|bug)\s+(\d+)\s+

缺陷/错误 # 在匹配组 #1 中可用

于 2013-11-13T16:17:12.023 回答
0

如果您只在关键字后面寻找数字,那么正则表达式可能会有所帮助......

(?<=(Defect|HPQC|Bug)\s*#?\s*)\d+

祝你好运!

于 2013-11-13T16:24:33.173 回答
0

我精确的Beroe回应:

(?:Defect|HPQC|Bug)\s*\#?\s*(\d+)`

(?:Defect|HPQC|Bug): 检测但不捕获

\#: 斜线表示禁用评论

它在 Expresso 上对我有用

于 2013-11-13T16:30:28.650 回答