正则表达式循环提取嵌套的每对html标签

正则表达式循环提取嵌套的每对html标签,第1张

由内向外循环!内是指哪一层的内!有必要哪样吗!返正最终<>都是全变到[],为什么向外循环!这样不是增加计算机内存吗!

<script>

var pattern='<html><head><title>1</title></head><body><div>top</div><div><div class="main"><div>content<br />newline </div></div></div></body></html>';

documentwrite(patternreplace(/</g,"[")replace(/>/g,"]"));

</script>

补:你可以看一下UBB代码原理!正则是解决不了这问题的,也不知你要实现什么功能!你也可以用ID来设置。如:idinnerHTML 来处理。

给你个例子,你自己看看吧。

平衡组/递归匹配

如何把xx <aa <bbb> <bbb> aa> yy这样的字符串里,最长的配对的尖括号内的内容捕获出来?

这里需要用到以下的语法构造:

('group') 把捕获的内容命名为group,并压入堆栈(Stack)

('-group') 从堆栈上d出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空,则本分组的匹配失败

((group)yes|no) 如果堆栈上存在以名为group的捕获内容的话,继续匹配yes部分的表达式,否则继续匹配no部分

(!) 零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败

我们需要做的是每碰到了左括号,就在压入一个"Open",每碰到一个右括号,就d出一个,到了最后就看看堆栈是否为空--如果不为空那就证明左括号比右括号多,

那匹配就应该失败。正则表达式引擎会进行回溯(放弃最前面或最后面的一些字符),尽量使整个表达式得到匹配。

平衡组一个匹配嵌套的<div>标签

<div[^>]>[^<>]((('open'<div[^>])[^<>])+('-open'</div>)[^<>])+)((open)(!))</div>

import javautilregex;

public class RegexExample {

public static void main(String []args) {

String content=获取的网页内容;

Pattern p=Patterncompile("<div class=\"fliter_px\">([\\s\\S]+)<div class=\"search_page\">");

Matcher m=pmatcher(content);

if(mfind()){

Systemoutprintln(mgroup(1));

}

}

}

public static void main(String[] args) {String s1 = "zwerwr423111111";Pattern p = Patterncompile("([^]+)");Matcher m = pmatcher(s1);while(mfind()){Systemoutprintln(mgroup(3));}} //改了下正则,这样很强大了

正则:/<[^>]>|/g

结果:"111!  !!123↵!222↵123↵ "

正则:/(<=>)(|\s) (=</\w+[^<] >)/g

结果:["111!  !!123", "↵", "!222", "↵", "123", "↵", " "]

结果:[">111!  !!123", ">↵", ">!222", ">↵", ">123", ">↵", "> "]

问题:都会带一个>号,map循环slice下就好了

(<=>)[^<>]+(=<)

假如html标签里面有一句:

String a = "<style type=\"text/css\"> div \n" +

"{ margin: 0; padding: 0; outline: 0; }</style>";

我如何把这一句取出来呢,包括标签。

用正则表达式:<style([\\s\\S])</style>

扩展资料:

正则表达式匹配HTML标签

方法一:

var str = '<p class="odd" id="odd">123</p>';

var pattern = /<\/[a-zA-Z]+(\s+[a-zA-Z]+="")>/g;

consolelog(strmatch(pattern));

方法二:

var str = '<p class="odd" id="odd">123</p>';

var pattern = /<[^>]+>/g;

consolelog(strmatch(pattern));

方法三:

var str = '<input type="text" value=">" name="username" />';

var pattern = /<(:[^"'>]|"[^"]"|'[^']')>/g;

consolelog(strmatch(pattern));

说明:()表示捕获分组,()会把每个分组里的匹配的值保存起来,使用$n(n是一个数字,表示第n个捕获组的内容)

(:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来

没有引用的需求的话,采用非捕获性分组,更为简洁;

方法四:

var str = '<input type="text" value=">" name="username" />';

var pattern = /<(:[^"'>]|(["'])[^"']\1)>/g;

consolelog(strmatch(pattern));

</script>

    header('content-type:text/html; charset=utf-8');

    $str = '<li><a href="/news1397/" title="1827年3月5日 意大利物理学家伏打逝世">1827年3月5日 意大利物理学家伏打逝世</a>  </li>    

             

           <li><a href="/news1398/" title="1871年3月5日 波兰女革命家卢森堡诞辰">1871年3月5日 波兰女革命家卢森堡诞辰</a>  </li>    

             

           <li><a href="/news1399/" title="1886年3月5日 董必武诞辰">1886年3月5日 董必武诞辰</a>  (图)</li>    ';

    preg_match_all('/<a>()<\/a>/im', $str, $matches);

    var_dump($matches[1]);

以上就是关于正则表达式循环提取嵌套的每对html标签全部的内容,包括:正则表达式循环提取嵌套的每对html标签、如何用js和C#的正则表达式获取具备指定属性的任意html标签、java正则表达式获取任意两个html标签中的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9496740.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存