在工作中,我需要爲C註釋(/ *)創建perl樣式正則表達式,以留下代碼中留下的註釋。我們的業務分析師提出了新的要求,這些要求都以「BA」開頭,我應該以某種方式掃描註釋以查找這些實例。我對正則表達式非常不熟悉,並且在閱讀了更多關於它們的信息之後,我很失望如何僅使用BA字符串來定位註釋塊。C語言的Perl風格正則表達式
任何指導將不勝感激。
在工作中,我需要爲C註釋(/ *)創建perl樣式正則表達式,以留下代碼中留下的註釋。我們的業務分析師提出了新的要求,這些要求都以「BA」開頭,我應該以某種方式掃描註釋以查找這些實例。我對正則表達式非常不熟悉,並且在閱讀了更多關於它們的信息之後,我很失望如何僅使用BA字符串來定位註釋塊。C語言的Perl風格正則表達式
任何指導將不勝感激。
我不知道的爲C註釋任何奇怪的轉義規則,所以我覺得你只是想這樣的事情:
/\/\*.*?\/\*/s
的s
標誌意味着該.
也將匹配回車,所以評論可以跨越多行。
只匹配開始「BA」的評論,你會想:
/\/\*BA.*?\/\*/s
考慮添加i
標誌,如果該「BA」部分可以是小寫。
其實我想你想要'/ s'作爲你的後綴。 '/ m'表示'^'和'$'將匹配任何行的開始或結束,而不是整個模式,這在這裏沒有太大的好處。 –
@PlatinumAzure - 哎呀!當然,你是對的。謝謝。 –
完美,這正是我所需要的。對於這樣的情況,有沒有一種簡單的方法來否定正則表達式?例如,如果我想匹配所有不包含BA的評論? – user964210
find . -regex ".*\.[ch]" | xargs grep -regex "/\* *BA"
,做什麼:
因此您正在查找包含BA的註釋?你的意思是這樣?:'/ *東西BA東西* /'。請舉例說明您需要匹配的內容。你有沒有嘗試先搜索? (匹配C註釋是一個已經被問及並回答的問題。) – ridgerunner
@ user964210,請注意,沒有_single_正則表達式模式不會在這樣的東西上跳轉:'s =「foo/* bar」;' (即字符串文字中的'/ *')。 –