如何在git diff中的标点符号上拆分单词?

时间:2016-03-24 03:43:26

标签: regex git diff git-diff posix-ere

我对以下命令感到满意:

git diff --color-words='[^][<>()\{},.;:?/|\\=+*&^%$#@!~`"'\''[:space:]]+|[][<>(){},.;:?/|\\=+*&^%$#@!~`"'\'']'

但它似乎没有在第一个字符类中正确地否定方括号。

我试过这个:

git diff --color-words='[^\]\[<>()\{},.;:?/|\\=+*&^%#@!~`"'\''[:space:]]+|[\]\[<>(){},.;:?/|\\=+*&^%#@!~`"'\'']'

为了使方括号成为字面值,但它失败并显示消息fatal: Invalid regular expression

修改

我得到的输出是这样的:

  

<德尔> foobar的的 FO] OB [AR

但我所追求的是:

  

FO的 OOB的 [ AR

2 个答案:

答案 0 :(得分:1)

使用单词差异,您将始终看到新单词旁边删除的单词。

这就是为什么你在新的改变之前得到了这个词。

阅读这个问题,非常详细的回答:

Filtering a diff with a regular expression

答案 1 :(得分:0)

即使我最终不需要它,但要像我的示例一样查看字符级差异,这也有效:

git diff --color-words=.