2011-09-12 133 views
0

我想在Visual Studio中的一堆C++源文件中找到與包含'if'的單詞匹配的所有行,因此我需要過濾出if語句以及#if預處理器語句。Visual Studio中的正則表達式

正則表達式我試圖用如下:[^#]*if[^\s]+

但我得到的結果包括所有if聲明和#if線。

我檢查了this questiondocumentation on Visual Studio regular expressions的答案,但仍不知道爲什麼我使用的表達式無法按預期工作。

是否正確記錄了Visual Studio正則表達式方言的語法?

回答

3

\s不是VS快捷方式的空白,:b是(空間或標籤)。這包含在您鏈接到的文檔頁面中。

+0

試試'\#'; '#'在VS正則表達式中有特殊的含義(我認爲它只在字符類外部這樣做,但是誰知道)。另外,您可能在開始時需要一個'^'錨點,否則正則表達式會將行與'#if'匹配,因爲'*'使得「not-#」部分可選。我沒有安裝VS,所以我無法測試它,對不起。 –

+0

謝謝蒂姆。你說'\ s'是對的。這是有效的:'[^ \#] * if [^:b] +'。 –

+0

我想我太習慣了(我並沒有深入使用正則表達式,但是)* NIX正則表達式。 –

0

您是否嘗試過逃脫#

[^\#]*if[^\s]+ 
+0

顯然'#'對於正則表達式語法沒有特別的意義。無論如何我都試過了,但它不起作用。 –

+0

那麼,它*有*有特殊的含義 - 請參閱您的文檔鏈接,但如果您嘗試過,則問題可能在其他地方。 –

+0

對,謝謝。 Ì看着那張桌子,但我不知何故沒有看到'#'這一行:) –

1

這將匹配任何沒有#之前的if,並且沒有跟在(之後,按照您的需要對其進行調整。

~(\#)if~(\() 
+0

謝謝。這對我有效:'〜(\#)if〜()'。 –

相關問題