>我有一个看起来像
No-mac4-two-git5a0r-m0-18md12b....
我试图将其匹配为/^D+d+D+dDdD+d+D+(d+)/
但它不正确。我可以得到一些帮助吗?我只需要匹配字符串的这一部分,尽管还有更多内容,这就是为什么我在末尾使用"+"的原因。
进一步解释:
这些字符串是路径名的一部分。我正在尝试根据它们是否与正则表达式匹配来检索一些路径。所有路径都有一个字符串,其模式和格式与我上面显示的完全相同。不过,我无法以匹配的方式成功返回任何路径。
你说/^D+(?:d+D+)+(d+)/
为你工作,所以你的问题是关于匹配字符串中的最后 1+ 位块。
答案在这里:
(d+)(?!.*d)
(d+)D*z
.*(?:D|^)(d+)
证明:
if ("no-mac4-two-git5a0r-m0-18md12b...." =~ /(d+)(?=D*$)/) {
print "$1";
}
# => 12
if ("no-mac4-two-git5a0r-m0-18md12b...." =~ /(d+)D*z/) {
print "$1n";
}
# => 12
if ("no-mac4-two-git5a0r-m0-18md12b...." =~ /.*(?:D|^)(d+)/) {
print "$1";
}
# => 12