在git diff中如何根据标点符号拆分单词?

4
我对以下命令有些了解:

我对以下命令有些掌握:

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

但第一个字符类似乎不能正确地取消方括号。

我尝试了这个:

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

为了使方括号成为文字,但是它会出现错误信息fatal: Invalid regular expression编辑: 我得到的输出如下:

foobarfo]ob[ar

但我想要的是:

fo]oob[ar


你能展示一下diff的样例和你期望的输出吗? - Schwern
2个回答

2

通过单词差异(word diff),您将始终看到新字旁边删除的单词。

这就是为什么您在新更改之前看到单词的原因。

阅读此问题,非常详细的答案:

使用正则表达式过滤差异


我理解,但是该正则表达式的目的是定义一个单词由什么组成。在这种情况下,它应该是一串非空格和非标点符号字符,或者是一个单独的标点符号字符。 - Walf
你是对的。它检测到了一个被改变的单词。当标点符号的变化在单词外部时,正则表达式按预期工作。 - Walf

2
尽管最终我并不需要它,但为了查看类似于我的示例的字符级差异,可以使用以下方法:
git diff --color-words=.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接