2015-08-31 16 views
0

我想在我的項目中查找所有硬編碼字符串,除了字首以Log(錯誤'重複運算符操作數無效'帶負面後面的正則表達式(?<!(Log ())@「[^」] +「

使用這個正則表達式這樣做,但如上所述得到一個錯誤。

KEYWORDS='(?<!(Log\())@"[^"]+"' 

find "${SRCROOT}" \(-name "*.h" -or -name "*.m" \) -print0 | xargs -0 egrep --with-filename "($KEYWORDS).*\$ 

是否有任何其他的替代正則表達式或腳本,以獲得相同的結果。

+0

這是一個Perl的正則表達式,而不是一個(egrep的)擴展正則表達式。我懷疑答案是「否」,因爲你在談論xcode,但是你的grep有'-P'選項嗎? –

+0

不,它沒有-P選項。有沒有一種方法可以使用awk獲得相同的輸出 – vrk

+0

據我所知,只有Perl正則表達式引擎實現了負面後視。 –

回答

1

你可能只是過濾掉什麼你不想看到:

xargs -0 grep -EH '@"[^"]+"' | grep -v 'LOG\(@"' 

如果你想堅持用正則表達式:

xargs -0 perl -ne 'print "$ARGV: $_" if /(?<!LOG\()@".+?"/' 
+0

作爲一名加拿大人,該grep調用使我感到愉快。 –

+0

謝謝!!第二個給我的結果幾乎接近我所需要的。 – vrk

+0

以及如何只打印匹配?如果/(?<!LOG \()(@「。+?」)/'''',上面的perl腳本給我整行爲o/p – vrk

相關問題