2011-09-26 51 views
2

在工作中,我需要爲C註釋(/ *)創建perl樣式正則表達式,以留下代碼中留下的註釋。我們的業務分析師提出了新的要求,這些要求都以「BA」開頭,我應該以某種方式掃描註釋以查找這些實例。我對正則表達式非常不熟悉,並且在閱讀了更多關於它們的信息之後,我很失望如何僅使用BA字符串來定位註釋塊。C語言的Perl風格正則表達式

任何指導將不勝感激。

+0

因此您正在查找包含BA的註釋?你的意思是這樣?:'/ *東西BA東西* /'。請舉例說明您需要匹配的內容。你有沒有嘗試先搜索? (匹配C註釋是一個已經被問及並回答的問題。) – ridgerunner

+2

@ user964210,請注意,沒有_single_正則表達式模式不會在這樣的東西上跳轉:'s =「foo/* bar」;' (即字符串文字中的'/ *')。 –

回答

3

我不知道的爲C註釋任何奇怪的轉義規則,所以我覺得你只是想這樣的事情:

/\/\*.*?\/\*/s 

s標誌意味着該.也將匹配回車,所以評論可以跨越多行。

只匹配開始「BA」的評論,你會想:

/\/\*BA.*?\/\*/s 

考慮添加i標誌,如果該「BA」部分可以是小寫。

+1

其實我想你想要'/ s'作爲你的後綴。 '/ m'表示'^'和'$'將匹配任何行的開始或結束,而不是整個模式,這在這裏沒有太大的好處。 –

+0

@PlatinumAzure - 哎呀!當然,你是對的。謝謝。 –

+0

完美,這正是我所需要的。對於這樣的情況,有沒有一種簡單的方法來否定正則表達式?例如,如果我想匹配所有不包含BA的評論? – user964210

0
find . -regex ".*\.[ch]" | xargs grep -regex "/\* *BA" 

,做什麼:

  • 找到你所有的C源文件和頭文件。
  • 在這些文件中搜索「/ *」,然後搜索任意數量的空白,然後搜索「BA」。