我需要應用一個 git word diff 將每個字符都視為一個單詞,除非字符被方括號括起來。在那種情況下,我希望方括號中的所有內容(甚至空格),包括括號本身和它們替換的內容都被視為完整的單詞,這樣這些東西就不會被分解。
根據
由于字母“e”同時出現在“The”和“future”這兩個詞中,因此它被重復使用并且未標記為更改。我相信這是使用正則運算式的結果.。然而,最后,只有“possibilities”中的字母“s”被突出顯示,而不是整個單詞被替換,正則運算式完成了預期的作業。
整個事情應該是這樣的:

在這里,括號和它們替換的內容都被視為內聚單元,最后的“可能性”一詞仍然不是,這是完美的。
我玩過各種正則運算式,包括使用 XOR,但無濟于事。我的猜測是,在我的許多嘗試中,.“吞下”我與之結合的任何限制性表達。我已經得到了上面的具體示例[a-zA-Z0-9\[]]|\s|\\n|[^[:space:]],但我不知道為什么(正則運算式菜鳥)并且它在其他情況下不起作用。
請記住,git使用“POSIX “擴展”正則運算式而不是 PCRE 或 Perl 兼容的正則運算式,例如[:space:]代替\s空白字符類。”
uj5u.com熱心網友回復:
$ sh -x <<\EOD; rm -rf test
git init test; cd $_
echo The possibilities > test; git add .; git commit -m-
sed -i 's,The,[Our future],' test; git commit -am-
git show --oneline --word-diff-regex=.
git show --oneline --word-diff-regex='\[[^]]*\]?|.'
EOD
git init test
Initialized empty Git repository in /home/jthill/sandbox/test/test/.git/
cd test
echo The possibilities
git add .
git commit -m-
[master (root-commit) 06604d0] -
1 file changed, 1 insertion( )
create mode 100644 test
sed -i 's,The,[Our future],' test
git commit -am-
[master 6728cd4] -
1 file changed, 1 insertion( ), 1 deletion(-)
git show --oneline --word-diff-regex=.
6728cd4 (HEAD -> master) -
diff --git a/test b/test
index c6eb735..1187549 100644
--- a/test
b/test
@@ -1 1 @@
[-Th-]{ [Our futur }e{ ] } possibilities
git show --oneline '--word-diff-regex=\[[^]]*\]?|.'
6728cd4 (HEAD -> master) -
diff --git a/test b/test
index c6eb735..1187549 100644
--- a/test
b/test
@@ -1 1 @@
[-The-]{ [Our future] } possibilities
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/536306.html
標籤:正则表达式混帐差异字差
上一篇:git從本地存盤庫獲取最新標簽
下一篇:為什么github不報錯![remoterejected]master->master(branchiscurrentlycheckedout)和遠程服務器呢?
