【发布时间】:2018-11-14 18:44:42
【问题描述】:
我想知道git diff 究竟如何将提供给 xfuncname 的表达式应用于结果,以及是否可以将搜索块头文本委托给另一个程序。
上下文:我想更改我的git diff 的 xfuncname 设置以显示 xml 文件的可用输出。一个看起来像这样的示例 xml:
<layer1-1>
</layer1-1>
<layer1-2>
<layer2-1>
</layer2-1>
<layer2-2>
</layer2-2>
<layer2-3>
<layer3-1>
[...]
changes
[...]
</layer3-1>
<layer3-2>
</layer3-2>
<layer3-2>
</layer3-2>
</layer2-3>
</layer1-2>
<layer1-3>
</layer1-3>
理想情况下,带有修改的块头的输出应该是这样的
@@ -15 +15 @@ <layer1-2><layer2-3><layer3-1>
[...]
-notchanged
+changed
[...]
我的观察表明git diff 将正则表达式应用于文件的部分之前的差异,采用 last 匹配,然后 first捕获组;它使用m 标志。这样描述合适吗?
由于 RE2 显然既不支持 backreferences 也不支持 lookaheads,我不确定我想要做的事情是否可以通过这种方法实现。有没有办法指定一个接收差异作为输入的自定义程序/脚本,这样我就可以自己指定一个大块头?
【问题讨论】:
-
虽然这个想法看起来很有趣,但是用正则表达式解析 XPath 是很难实现的,而且如果不支持环视。我担心你不能用
xfuncname