[英]Java regex find variable name outside a string
我想查找文件中所有出現的變量名,比如說變量test
:
int test;
但是我不想在字符串中匹配變量名,例如
String s = "This is a test!";
我試過了([^\\"])([a-zA-Z_$][\\\\w$]*)([^\\"])
,但是它不起作用。
正如我在評論中說的那樣,通常為此使用正則表達式不是一個好主意。 您應該為此使用某種解析器。
但是無論如何,這里有一個簡單的技巧可以在某些情況下使用:
(?xm) \b test \b
(?=
(?:[^\n"\\]+|\\.)*
(?:(?:"(?:[^\n"\\]+|\\.)*){2})*
$
)
Java引用:
"(?m)\\btest\\b(?=(?:[^\n"\\\\]+|\\\\.)*(?:(?:"(?:[^\n"\\\\]+|\\\\.)*){2})*$)"
一些評論和其他東西會破壞它。
暫時刪除源代碼中的所有字符串, 然后搜索變量名也許是個好主意。
假設源代碼有效(沒有語法錯誤),則可以將所有內容從第一個出現的雙引號(“)剪切到下一個雙引號。
請注意,只有一個字符的變量名(如d
)將需要一些附加代碼,因為d
也用於強制編譯器將前面的數字解釋為double dbl = 6d
(例如double dbl = 6d
)。
編輯:我假設您想構建一個應用程序或一段代碼,輕量檢查變量名。
如果您在編輯器中工作,建議您使用Netbeans或Eclipse之類的高級編輯器。
否則,如果您還想檢查語法是否正確,則需要構建自己的解釋器(或從Internet下載一些解釋器)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.