我使用的,如果類型(if\()(.*)(?!\{)
正則表達式查找所有的「如果」沒有聲明「{」
似乎並不奏效......
例子:
if((Collection.containsKey(primaryKeyValue))) {
此外,我要排除else if
我使用的,如果類型(if\()(.*)(?!\{)
正則表達式查找所有的「如果」沒有聲明「{」
似乎並不奏效......
例子:
if((Collection.containsKey(primaryKeyValue))) {
此外,我要排除else if
此正則表達式匹配(大部分時間)if
聲明,沒有使用{
與;
結束:
\bif\s*\([^\{]+;
(\b
是字邊界,以確保如果是單獨的,而不是另一個詞的一部分等ZIF)。
但是,這個正則表達式是不可靠的。其實,任何正則表達式解決方案在這裏不能100%可靠,因爲您匹配的字符可以存在於if
條件內的字符串中。
考慮這個例子 - 它不會通過上述正則表達式,而這顯然是罰款由您的規則:
if (s.equals(";{;};")) { t="({;})"; }
而且它會通過這個例子,這是不對您的規則:
if (s.equals("{;}")) t="({;})";
如果你想在這裏堅如磐石的表現,你必須編寫你自己的代碼解析器。
+1表示何時無法工作:) – exexzian
沒有範圍的if
需要由;
終止。所以你可以在{
之前檢查一下if
之後是否有;
。這個正則表達式應該這樣做:
(if[^{;]*;)
請注意,這需要多行正則表達式。
正則表達式不是真正的票。如果你有例如Perl或Python,你可以在整個文件中使用他們對字符串的多行regex支持,但是你也可以爲'if'語句定義一個簡單的解析器,或者爲你的目標語言找到一個語法。 – tripleee
你的課程是什麼? perl(或任何PCRE)? VI? Emacs的? JavaScript的? – dan3