2009-10-06 87 views
0

我想檢查一個字符串,然後提取所有以@開頭的變量。我無法找到適當的正則表達式來檢查字符串。該字符串可能以@"開頭,如果它以"開頭,則它應該有一對匹配"正則表達式來檢查字符串

實施例1:

"ip : "[email protected]+"."[email protected]+"."[email protected]+"."[email protected] 

實施例2:

@nameParameter "@yahoo.com" 

由於

+1

這是一種不清楚 - 你想要提取什麼?對於你的每個例子,你應該在結果數組中列出你想要的結果 – 2009-10-06 13:20:46

+0

我想他想要所有的@除了在引用字符串內時除外 – 2009-10-06 13:23:15

+0

每當你開始尋找「匹配對」,你可能想要開始考慮除正則表達式之外的東西。並不是說這個表達方式是不可能的;只是它可能最終會比它的價值更麻煩。 – 2009-10-06 13:28:28

回答

1

它可能是最容易第一分割每個引用字符串的字符串,則檢查未引用的零件@的。例如,所有帶引號的字符串可能是:/"[^"]*"/,在您的字符串上調用Regex.Split將返回非引號部分的字符串數組,然後您可以使用表達式/@\w+/查找任何@的字符串。

+0

我試圖拆分字符串與/」[^「] *」/但它沒有工作! System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@「/」「[^」「] * /」「」); string [] consts = reg.Split(valueToCheck); – Asha 2009-10-06 14:16:36

+0

你是什麼意思,它沒有工作?對不起。 – 2009-10-08 15:51:38

+0

這是一個語法錯誤,我應該改變一些東西,但謝謝你的分裂建議。 – Asha 2009-10-19 12:18:32

0

試試這個:


string text = "@nameParameter \"@yahoo.com\""; 
Regex variables = new Regex(@"(?<!"")@\w+", RegexOptions.Compiled); 
foreach (Match match in variables.Matches(text)) 
{ 
    Console.WriteLine(match.Value); 
} 
0

要檢查已在您的文章中提供的字符串:

(^( 「[^」 \ r \ n] 「\ S + @ [\ (+)+)+(+)+)|(((^ @ [\ w。] +)|(「@ [\ w。] +」))\ s *)+

相關問題