Источники содержат стандартные слова регулярных выражений в файле userdiff.c
. Макросы PATTERNS
и IPATTERN
принимают базовое слово regex в качестве третьего параметра и добавляют "|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+"
, чтобы убедиться, что все символы без пробелов, которые не являются частью более крупного слова, рассматриваются как само слово и предполагают UTF-8 без разделяя многобайтовые символы. Так, например, в:
PATTERNS("tex", "^(\\\\((sub)*section|chapter|part)\\*{0,1}\\{.*)$",
"\\\\[[email protected]]+|\\\\.|[a-zA-Z0-9\x80-\xff]+"),
слово регулярное выражение "\\\\[[email protected]]+|\\\\.|[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]+
, но это также не наносит никакого вреда.
на мерзавца версии 2.8.3, $ мерзавец дифф --word-Diff-регулярное выражение = "\\\\ [A-Za-Z @ .] + | \\\\ | [A-Za-Z0-9 \ x80- \ XFF] + | [^ [: пространство:]] | [\ xc0- \ XFF] [\ x80- \ XBF] + "и git diff -word-diff дают похожие, но разные результаты –