2016-03-24 8 views
2

Ich habe etwas Glück mit dem folgenden Befehl habe:Wie spalte ich Wörter auf Interpunktion in git diff?

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

aber es scheint nicht die eckigen Klammern richtig in der ersten Zeichenklasse zu negieren.

Ich habe dies versucht:

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

um die eckigen Klammern wörtliche zu machen, aber es funktioniert nicht mit der Meldung fatal: Invalid regular expression.

Edit:

Der Ausgang ich erhalte, ist etwa so:

foobarfo] ob [ar

Aber was ich nach its:

fo ] oob [ ar

+0

Könnten Sie eine Probe eines diff und Ihre erwartete Ausgabe zeigen? – Schwern

Antwort

1

Mit Wort diff Sie immer das Wort, das Sie neben dem neuen entfernt werden sehen.

Deshalb haben Sie das Wort vor Ihrer neuen Änderung.

diese Frage lesen, sehr ausführliche Antwort:

Filtering a diff with a regular expression

+0

Ich verstehe das, aber der Zweck dieser Regex ist zu definieren, woraus ein einzelnes Wort besteht. In diesem Fall sollte es sich um einen Satz Nicht-Leerzeichen und Nicht-Interpunktionszeichen oder ein einzelnes Interpunktionszeichen handeln. – Walf

+0

Sie hatten Recht. Es entdeckte ein Wort, das durch die Änderung "gebrochen" wurde. Die Regex funktioniert wie erwartet, wenn die Interpunktionsänderung außerhalb eines Worts liegt. – Walf