我試圖編寫一個正則表達式來搜索/ if/while關鍵字作爲從C++源代碼文件中讀取的字符串,但不包括任何包含它們的字詞:TCL:正則表達式來查找是否在字符串中爲
WhatifYes()
Whatfor()
Waitforwhile()
我寫我的正則表達式如下圖所示:
if { [ regexp {(for|while|if)(\s+)(\()} $lineValue ] } {
但它不是拿起樣病例:
while((int x = 0) > 0);
while((int x = 0) > 0)
for(int y =0 ; ;)
for(int y =0 ; ;);
if((int x = 9) > 0)
if((int x = 9) > 0);
起初我還以爲因爲我的正則表達式是誣陷,是這樣的:
if/for/while \s+ (#space or multiple spaces
但我試過,包括在上面的例子中空格:
while ((int x = 0) > 0);
while ((int x = 0) > 0)
if ((int x = 9) > 0)
if ((int x = 9) > 0);
不過正則表達式是行不通的 - 請讓我知道什麼是正則表達式我應該用它來捕捉它們?
,而假若/時/對於總是有一個空間或在他們面前行的開始?似乎你應該在你的正則表達式中有一個空間/開始行。然後在它們之後可以是空格或者「(」或者空格/「(」/行結尾,但是總是有/ if/for內部註釋,這可能不能用一個正則表達式來處理 – Scooter
謝謝是我們需要在註釋中排除字符串if/for/while也有可能他們可能從一個新行開始,或者像這樣{do if(x> y){}} – Prakash
如果你真的熱衷於除了註釋中的內容之外,你必須使用完整的解析器,其他的只是變得太複雜了,會有太多的聯鎖規則。(更重要的是,如果你想了解C++,祝你好運!你需要它......) –