【问题标题】:Match repository names with regex将存储库名称与正则表达式匹配
【发布时间】:2014-09-23 16:34:40
【问题描述】:

我的一些存储库共享命名约定,因此具有相同的结尾,例如

tools2
subdirectory/tools2
subdirectory/etc/tools2

我想将这些存储库与我的 gitolite conf 文件中的单个正则表达式(如果可能)进行匹配。

@tools_repos = .*tools2

当我尝试推送此更改时,它给了我一个错误

致命:错误的扩展 '.*tools'

如果我理解正确,我的模式需要是一个子集

$REPONAME_PATT        =  qr(^\@?[0-9a-zA-Z][-0-9a-zA-Z._\@/+]*$);
$REPOPATT_PATT        = qr(^\@?[[0-9a-zA-Z][-0-9a-zA-Z._\@/+\\^$|()[\]*?{},]*$);

阅读documentation我想出了这个正则表达式

[a-zA-Z0-9].*tools2

但是这个解决方案不匹配

tools2

是否有一种简单的方法可以将存储库与单个正则表达式匹配?

【问题讨论】:

  • +1 用于构造好的问题 :)

标签: regex gitolite


【解决方案1】:

如果支持'?',可以试试:

 [a-zA-Z0-9]?.*?tools2
 # or
 [a-zA-Z0-9].*?t?ools2 (suggested by HamZa)

也许非贪婪形式可以匹配 tools2。

OP praktireports 这似乎有效:

 [a-zA-Z0-9]?.*tools2

【讨论】:

  • 我认为整个问题在于[a-zA-Z0-9] 正在阻止tools2 的匹配
  • 确实,我只是想知道他是否想在开头强制执行一个单词字符。如果是这种情况,我们可以让t? 成为可选的[a-zA-Z0-9].*t?ools2。猜测......编辑:哦,但这也将匹配fools2:P
  • @HamZa 确实如此。我在答案中都提出了建议。让我们看看 OP 是否可以告诉我们这些选项是否有效。
  • 使用这个正则表达式 gitolite 创建了一个名为 [a-zA-Z0-9].*?tools2 的空存储库
  • @prakti 你的意思是空名?
猜你喜欢
  • 2016-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 2014-01-17
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多