c#正则表达式问题

时间:2009-02-26 12:21:01

标签: c# regex

我希望像这样搜索行中的值

<p align="center"><input type="hidden" name="e79e7ec" value="15302f565b">

我需要name =“”value和value =“”value:P创建此代码,但此代码无效

Regex rloginRand = new Regex(@"<p align=center><input type=hidden name=\w*");
            Match mloginRand = rloginRand.Match(source);
            string loginrand = "";
            if (mloginRand.Success)
            {
                 loginrand = mloginRand.ToString().Replace("<p align=center><input type=hidden name=", "");
            }
            string loginrnd = "";
            Regex rloginRnd = new Regex(@"name="+ loginrand+"value=\w*");
            Match mloginRnd = rloginRnd.Match(source);

            if (mloginRand.Success)
            {
                loginrnd = mloginRnd.ToString().Replace("name="+loginrand+" value=", "");
            }

错误是

Form1.cs(71,69):错误CS1009:无法识别的转义序列

在这一行

正则表达式rloginRnd =新正则表达式(@“name =”+ loginrand +“*** value = \ w ****”);

4 个答案:

答案 0 :(得分:4)

正则表达式并不总是HTML的最佳工具;我使用HTML Agility Pack(因为它不是xhtml)和xpath - 它应该是非常简单的:

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(html);
    HtmlNode node = doc.DocumentNode.SelectSingleNode("input");
    // read (if you want)
    string name = node.GetAttributeValue("name", ""),
        value = node.GetAttributeValue("value", "");
    // wipe
    node.SetAttributeValue("name", loginrand);
    node.SetAttributeValue("value", "");
    // get html
    html = doc.DocumentNode.OuterHtml;

答案 1 :(得分:1)

使用
Regex rloginRnd = new Regex(@"name="+ loginrand+@"*value=\w**");
注意:第二个@符号


Regex rloginRnd = new Regex(@"name="+ loginrand+"*value=\\w**");
注意:在\之前加双\

答案 2 :(得分:1)

您需要在字符串的每个部分前加上@

Regex rloginRnd = new Regex(@"name="+ loginrand+@"value=\w*");

答案 3 :(得分:0)

我不认为@涵盖整个字符串连接,只包括它所在的位。

尝试。

Regex rloginRnd = new Regex(@"name="+ loginrand+ @"*value=\w**");

Regex rloginRnd = new Regex(@"name="+ loginrand+ "*value=\\w**");

或使用string.format