什么是“git diff --word-diff”默认正则表达式?

Lap*_*try 4 git git-diff word-diff

git diff--word-diff-regex=<...>匹配单词的选项。某些语言有特殊的默认值(如 中所述man 5 gitattributes)。但这些是什么?文档中没有描述,我查找了 的来源git,也没有找到它们。

有任何想法吗?

编辑:我在git 1.9.1,但我会接受任何版本的答案。

小智 5

源文件中包含默认单词正则表达式userdiff.c。在PATTERNSIPATTERN宏以基字正则表达式作为他们的第三个参数,并添加"|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+"以确保所有不属于较大单词的一部分由自己作为一个词被视为非空白字符,并假设UTF-8,斗而不破了多- 字节字符。例如,在:

PATTERNS("tex", "^(\\\\((sub)*section|chapter|part)\\*{0,1}\\{.*)$",
         "\\\\[a-zA-Z@]+|\\\\.|[a-zA-Z0-9\x80-\xff]+"),
Run Code Online (Sandbox Code Playgroud)

这个词正则表达式是"\\\\[a-zA-Z@]+|\\\\.|[a-zA-Z0-9\x80-\xff]+|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+"

在这种情况下,|[\xc0-\xff][\x80-\xbf]+碰巧没有任何好处,因为 涵盖的所有内容都已[\xc0-\xff][\x80-\xbf]+被 涵盖[a-zA-Z0-9\x80-\xff]+,但它也不会造成任何伤害。