2011-07-05 112 views
3
參數

我有一個字符串變量下面的SQL示例語句提取所有與正則表達式

INSERT INTO T_Application 
(
    ApplicationGroupId, 
    Name, 
    Component, 
    SubComponent, 
    Description 
) 
VALUES 
(
    @ApplicationGroupId, 
    @Name, 
    @Component, 
    @SubComponent, 
    @Description 
) 

SET @Id = SCOPE_IDENTITY() 

我想是有在所有的參數名稱(ID,ApplicationGroupId,名稱,組件,子組件,說明) List<string>。 如何編寫RegEx來提取所有參數名稱?正則表達式也應該工作,如果這些參數在同一行,,

回答

8
Regex.Matches(sql, @"\@\w+").Cast<Match>().Select(m => m.Value).ToList(); 

結果列表之間的空間:

@ApplicationGroupId 
@Name 
@Component 
@SubComponent 
@Description 
+0

謝謝工作正常。 RegEx對我來說總是很神奇。 – gsharp

+0

我認爲這也會返回'@ Id'(這是正確的)。 +1 –

0

你可以試試這個正則表達式:

\({0,1}\s*(\w*)\, 

你可以然後使用標誌獲得匹配

+0

這不會在比賽中包含「@ Id」。 –

0

您可以使用以下正則表達式:

insert into[\s\S]+?\((?<parameter_names>([\s\S]+?))\) 

您將得到全組命名爲 'parameter_names' 的參數。

+0

這不會在比賽中包含「@ Id」。 –

+0

@Justin,你的權利......我想我必須改變我的正則表達式。感謝評論。 – Shekhar

+0

我認爲下面的正則表達式可以完成這項工作。 \ @ [\ W] +? – Shekhar