在引号之间获取值

时间:2008-11-13 13:56:17

标签: c# regex

如何使用RegEx

获取引号之间的值

例如我想找到函数测试中的所有参数

<html>
   test("bla");
   print("foo");
   test("moo");
</html>

结果必须是{“bla”,“moo”}

2 个答案:

答案 0 :(得分:2)

如果您只想将args转到test,则需要将其包含在正则表达式中:

    StringBuilder sb = new StringBuilder("{");
    bool first = true;
    foreach (Match match in Regex.Matches(html, @"test\((""[^\""]*\"")\)"))
    {
        if(first) {first = false;}
        else {sb.Append(',');}
        sb.Append(match.Groups[1].Value);
    }
    sb.Append('}');
    Console.WriteLine(sb);

从问题来看,我在这里使用引用检测。

或者 - 如果您只想要值:

    foreach (Match match in Regex.Matches(html, @"test\(""([^\""]*)\""\)"))
    {
        Console.WriteLine(match.Groups[1].Value);
    }

这里的主要变化是该组现在位于引号内。

答案 1 :(得分:1)

编辑:删除了旧代码并制作了linq版本......

    var array = (from Match m in Regex.Matches(inText, "\"\\w+?\"")
                 select m.Groups[0].Value).ToArray();

    string json = string.Format("{{{0}}}", string.Join(",", array));