我一直在試圖創建一個正則表達式,它只標識下面的粗體。我試過一些正則表達式規則,但沒有成功。正則表達式來識別java中的「if」場景
如果 _if abcifabc guiif
我不想承認,如果滿(條件){語句} ....
我一直在試圖創建一個正則表達式,它只標識下面的粗體。我試過一些正則表達式規則,但沒有成功。正則表達式來識別java中的「if」場景
如果 _if abcifabc guiif
我不想承認,如果滿(條件){語句} ....
你可以試試下面的正則表達式:
(?:^|\s)if(?:\s)
正則表達式的說明:
NODE EXPLANATION
------------------------------------------------------------
(?: group, but do not capture:
------------------------------------------------------------
^ the beginning of the line
------------------------------------------------------------
| OR
------------------------------------------------------------
\s whitespace (\n, \r, \t, \f, and " ")
------------------------------------------------------------
) end of grouping
------------------------------------------------------------
if 'if'
------------------------------------------------------------
(?: group, but do not capture:
------------------------------------------------------------
\s whitespace (\n, \r, \t, \f, and " ")
------------------------------------------------------------
) end of grouping
喜歡解釋的佈局。 – Rahul
考慮到註釋和字符串中可能出現「if」這個詞的頻率,至少在這個答案中看到一個免責聲明是很好的。 – 2017-05-26 15:15:21
這將匹配if
僅由空格前面:
^\s*if\b
^
- 固定到行首。
\s*
- 匹配零個或多個空格字符(包括空格和製表符)。
\b
- 需要一個字邊界。所以它不會匹配iffy
等
正則表達式不能完全識別編程語言中的關鍵字(因爲完全正確的解決方案需要完全解析語言)。但是,如果代碼遵循典型風格,這應該會很好地捕捉到。
if
兩者之間的字邊界:
/\bif\b/
但因爲它徘徊無論它們發生的所有if
匹配的話要小心(例如評論。)。
考慮到註釋和字符串中可能出現「if」這個詞的頻率,在這個答案中至少可以看到一個免責聲明。 – 2017-05-26 15:15:26
@ dan1111問題很模糊,答案也是如此。對某種編程語言沒有任何暗示。我們可以假設的是,「if」是一個關鍵字,對於使用字界的關鍵字。 – steffen
什麼標準來確定是否大膽? – Rahul
您不應該在可以使用特定分析器的地方使用正則表達式,特別是對於複雜的語言(如Java)。快速谷歌搜索將返回一些這些解析器,並且語言本身包含工具來做到這一點 – Aaron
@Aaron我們不知道任務。當然,如果你需要一個強大的方法來處理生產中的代碼,解析器是正確的。但是OP可能會在編輯器中做一些快速的黑客攻擊,或者編寫一個快速腳本來運行一套遵循已知標準的代碼文件。 – 2017-05-26 15:12:50