首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TortoiseSVN中寻找匹配多个引用字符串的正则表达式

问在TortoiseSVN中寻找匹配多个引用字符串的正则表达式
EN

Stack Overflow用户
提问于 2011-07-14 11:28:37
回答 1查看 554关注 0票数 2

我们使用两种不同的方法来引用外部文档和Bugzilla错误编号。

我现在正在寻找一个正则表达式,该表达式匹配引用字符串的这两种可能性,以便在TortoiseSVN 1.6.16日志屏幕中方便地显示和链接。首先应该是表单[BZ#123]的bugzilla条目,其次是[some text and numbers],它不需要转换为url。

这可以与

代码语言:javascript
复制
\[BZ#\d+\]

和

代码语言:javascript
复制
\[.*?\]

我现在的问题是将这两个匹配字符串连接在一起。通常,这是由regex (第一次\第二次)完成的,我是这样做的:

代码语言:javascript
复制
(\[.*?\]|\[BZ#\d+\])

不幸的是,在这种情况下,由于圆括号,TortoiseSVN似乎将其全部捕获为bug号。即使我添加了第二个表达式(根据文档)用于提取问题号本身,第二个表达式也应该被忽略:

代码语言:javascript
复制
(\[.*?\]|\[BZ#\d+\])
\[BZ#(\d+)\]

在本例中,TortoiseSVN在单独的列中正确地显示错误和文档引用,但将它们完全用于bugtracker url,这当然不起作用:

代码语言:javascript
复制
https://mybugzillaserver/show_bug.cgi?id=[BZ#949]

顺便说一下,Mercurial使用{1},{2},.作为URL中的占位符。

有谁知道如何解决这个问题吗?

编辑

简而言之:我们使用BZ#123作为bug编号引用,使用任意文本作为其他(部分非电子)文档的引用。我们希望在TortoiseSVN的额外列中列出这两种模式,但是在URL字符串中只使用第一部分shpuld中的bug号作为%BUGID%。

编辑2

据推测,TortoiseSVN不能处理嵌套正则组(圆括号),因此这个问题目前没有任何令人满意的答案。

EN

回答 1

Stack Overflow用户

发布于 2011-07-18 23:18:10

我对TortoiseSVN regex并不熟悉,但问题是,正则表达式的第一部分([.*?\])总是匹配的,所以您甚至都无法找到评估第二部分的部分,\[BZ#(\d+)\]。

试一试这个:

代码语言:javascript
复制
((?<=\[BZ#)\d+(?=\])|\[.*?\])

解释:

代码语言:javascript
复制
(           #Opening group.
(?<=\[BZ#)  #Look behind for a bugzilla placeholder.
\d+         #Capture just the digits.
(?=\])      #Look ahead for the closing bracket (probably not necessary.)
|           #Or, if that fails,
\[.*?\]     #Find all other placeholders.
)           #Closing the group.

编辑:,我刚刚看了TortoiseSVN文档。您还可以尝试保持Message part expression不变,但将Bug-ID expression更改为:

代码语言:javascript
复制
(?<=\[BZ#)(\d+)(?=\])

编辑: ?<=表示零宽度的查找。见http://www.regular-expressions.info/lookaround.html。TortoiseSVN可能不支持后置查找。

如果您只使用(\d+)作为您的Bug-ID expression会发生什么?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6692445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档