2014-03-18 73 views
3

我有一個非常大的代碼庫,在其中想找到所有不包含where原因的linq語句。如何爲mathing linq語句創建正則表達式不包含where子句?

因此,可以說我有一個LINQ聲明是這樣的:

from t in dc.tablename where t.somefield="somevalue" select t 

這種說法不應該被納入到搜索結果中,但是,如果語句是這樣的:

from t in dc.tablename select t 

這應該包含在搜索結果中。

到目前爲止,我只設法創建一個正則表達式匹配包含WHERE LINQ聲明:

from(.|\n){1,}(where)(.|\n){1,}select 

但當我嘗試這個辦法:

from(.|\n){1,}^(where)(.|\n){1,}select 

這是行不通的。

+1

那是什麼樣的正則表達式? Visual Studio搜索框使用哪種類型? –

+0

看到這個問題:http://stackoverflow.com/questions/3782538/parsing-a-string-c-sharp-linq-expression – roland

+0

Marnix:是的,我想在VS搜索框中使用它。 – user1307533

回答

1

也許你可以試試這個表達式:

from(?:(?!where|select)[\s\S])+select 

(?:(?!where|select)[\s\S])+將匹配任何字符(包括新行),除了whereselect,這樣你就不必擔心貪婪無論是。

+0

感謝,它似乎工作,雖然它也給出了假結果,但至少我已經找到了LINQ。 – user1307533

+0

@ user1307533好的。你能否給出一個假結果的例子?如果它可以幫助您獲取相關行:) – Jerry

+0

例如: ///將移動字段聲明從設計器文件修改爲代碼隱藏文件。 這也是一個結果,但我不明白爲什麼..也許Visual Studio的正則表達式搜索是以某種方式發生的:) – user1307533