2009-10-06 90 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 *)+

相关问题