【问题标题】:C# Regular Express how to have this matchC#正则表达式如何进行这种匹配
【发布时间】:2013-03-21 19:01:44
【问题描述】:

请帮我解决问题,非常感谢

string=
"
<span id="thread_aaaa" class="tsubject">
    <a href="viewthread.php?tid=12343245&amp;extra=page%3D1"> 
        WHAT I WANT TO GET1 
    </a>
</span>

<span id="thread_bbbb" class="tsubject">
    <a href="viewthread.php?tid=65456342&amp;extra=page%3D1">
        WHAT I WANT TO GET2
    </a>
</span>
"

我需要获取 WHAT I WANT TO GET1 、 WHAT I WANT TO GET2 等的值

我正在使用: ( " &lt; span id=\"thread_)(.+?)&lt; /a&gt;&lt; /span&gt;"),但是不行,求助

【问题讨论】:

  • 删除&lt;/a&gt;。为什么要开始呢?
  • 不起作用是什么意思?例外?编译器错误?结果错误?
  • @acheong87:我闻到了用正则表达式解析 HTML 的味道。aaa = 开始标签; bbb = 结束标签
  • 酷。我是对的;您正在尝试使用正则表达式解析 html。您应该查看 HtmlAgilityPack。

标签: c# regex collections match


【解决方案1】:

对于给出的新示例字符串,这会找到它们:

string str = @"
< span id=""thread_aaaa"" class=""tsubject"" >< a href=""viewthread.php?tid=12343245&extra=page%3D1"" > WHAT I WANT TO GET1 < /a >< / span>

< span id=""thread_bbbb"" class=""tsubject"">< a href=""viewthread.php?tid=65456342&extra=page%3D1"" >WHAT I WANT TO GET2</a>< /span>";

Regex regex1 = new Regex(@"href.*>(.*)< *\/a");
var matches = regex1.Matches(str);

foreach (var m in matches)
{
    var match = (Match) m;
    Console.WriteLine(match.Groups[1].Value.Trim()); // write the value to the console "pattern"
}

/*
Output:
WHAT I WANT TO GET1 
WHAT I WANT TO GET2
*/

【讨论】:

  • 谢谢,它有效,但适用于我的实际情况,它不适合我,请帮助
  • 您确定示例字符串正是您要搜索的内容吗?确保没有多余的空格或任何东西。例如,如果 中没有空格,如果它只是 ,那么在这种情况下,正则表达式将需要为“href.*>(.*)”。
  • 我的 str 是一个 html 字符串,使用 str = client.DownloadString("http://www.abc.com");但在你的情况下,你使用@符号,我什么也得不到,帮助
  • 知道了,可能有很多,我用这个,很好用!正则表达式 regex1 = new Regex("(.*)"); 非常感谢,克里斯
  • Lam 太好了,很高兴它成功了!如果您可以将我的答案标记为很棒的答案。
【解决方案2】:

您正在寻找的正则表达式是:

(?<=aaa)(.*)(?=bbb)

//匹配2个字符串aaa和bbb之间的任意字符

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多