当前位置: 首页 > 知识库问答 >
问题:

使用正则表达式在多个超文本标记语言标签之间获取文本[重复]

濮彬
2023-03-14

使用正则表达式,我希望能够获取多个DIV标记之间的文本。例如,以下内容:

<div>first html tag</div>
<div>another tag</div>

将输出:

first html tag
another tag

我使用的正则表达式模式仅匹配我的最后一个div标记并错过了第一个。代码:

    static void Main(string[] args)
    {
        string input = "<div>This is a test</div><div class=\"something\">This is ANOTHER test</div>";
        string pattern = "(<div.*>)(.*)(<\\/div>)";

        MatchCollection matches = Regex.Matches(input, pattern);
        Console.WriteLine("Matches found: {0}", matches.Count);

        if (matches.Count > 0)
            foreach (Match m in matches)
                Console.WriteLine("Inner DIV: {0}", m.Groups[2]);

        Console.ReadLine();
    }

输出:

找到的匹配项:1

内部DIV:这是另一个测试

共有3个答案

贺跃
2023-03-14

我认为这段代码应该有效:

string htmlSource = "<div>first html tag</div><div>another tag</div>";
string pattern = @"<div[^>]*?>(.*?)</div>";
MatchCollection matches = Regex.Matches(htmlSource, pattern, RegexOptions.IgnoreCase | RegexOptions.Singleline);
ArrayList l = new ArrayList();
foreach (Match match in matches)
 {
   l.Add(match.Groups[1].Value);
 }
东方飞捷
2023-03-14

由于其他人没有提到带有属性的超文本标记语言标签,以下是我的解决方案:

// <TAG(.*?)>(.*?)</TAG>
// Example
var regex = new System.Text.RegularExpressions.Regex("<h1(.*?)>(.*?)</h1>");
var m = regex.Match("Hello <h1 style='color: red;'>World</h1> !!");
Console.Write(m.Groups[2].Value); // will print -> World
谷奕
2023-03-14

用非贪婪匹配替换模式

static void Main(string[] args)
{
    string input = "<div>This is a test</div><div class=\"something\">This is ANOTHER test</div>";
    string pattern = "<div.*?>(.*?)<\\/div>";

    MatchCollection matches = Regex.Matches(input, pattern);
    Console.WriteLine("Matches found: {0}", matches.Count);

    if (matches.Count > 0)
        foreach (Match m in matches)
            Console.WriteLine("Inner DIV: {0}", m.Groups[1]);

    Console.ReadLine();
}
 类似资料:
  • 我正在寻找一个正则表达式,它必须在不同类型的HTML标记之间提取文本。 对于前任: <代码> <代码> <代码> 我找到了这个特殊的片段

  • 问题内容: 在2个标签之间选择所有文本的最佳方法是什么-例如:页面上所有“ pre”标签之间的文本。 问题答案: 您可以使用,(用所需的任何文本替换pre)并提取第一组(对于更具体的说明,请指定一种语言),但这只是假设您拥有非常简单且有效的HTML。 正如其他评论者所建议的那样,如果您要执行复杂的操作,请使用HTML解析器。

  • 使用regex,我希望能够获得多个html标记之间的文本。这里的HTML只是为了表示输入,我不担心HTML标签,只是想检索HTML标签中的内容(在正确的开始和结束标签之间)。例如,以下内容: 所需输入: 所需输出: 获得的输出: Regex我尝试过: 我没有得到预期的结果。 我的java代码:

  • 我正在尝试分离各个内联脚本标记: 这是我使用的模式: 但是我得到了这个结果: 虽然我期望得到这样的结果: 我使用的模式有什么问题吗?提前感谢! 使现代化 如果我使用 修饰符,我会得到这样的内容: 它设法分离 2 个脚本,但第一个脚本变为空字符串

  • 问题内容: 我有这个HTML: 我只需要匹配任何HTML标记之外的单词。我的意思是,如果我想匹配“简单”和“文本”,则只能从“这是简单的html文本”和最后一部分“文本”中获得结果- 结果将是“简单” 1匹配,“文本” 2火柴。有人可以帮我吗?我正在使用jQuery。 是我要匹配的单词(在这种情况下为“简单”) 是 我需要用来包装所有选定的单词(在此示例中为“简单”)。但是我只想包装 任何 HTM

  • 我有一个聊天应用程序,通过API接收HTML作为JSON。每个聊天信息都在文本视图中显示HTML,但我需要显示表格和标记。我尝试了Html。fromHtml()函数和图像的ImageGetter,但是我找不到显示表标记的方法。 我不能使用WebView,因为这意味着为每条消息显示一个WebView(这不是很有效)。 提前感谢。