正则表达式匹配HTML标签之间的内容

如:
<div class='view-field view-data-node-title'><a href="/node/3856">[Number] 3ax [5Href] URL,cc#aa #bs/3c6h.</a></div>
html标签内容有“,”、"."、"["、"]"、"/"这些符号
我要匹配得到结果:[Number] 3ax [5Href] URL,cc#aa #bs/3c6h.
哪位好心人愿意花点时间帮我解决了,我的水平写不出来(弄了三个小时了就得到这么一个“>[a-zA-Z1-9\\s]+<”...匹配不到),谢谢了。
忘了说了,标签之间只有英文,div和a标签不是固定的,可能是其他的标签.......请测试一下能否通过(C#使用的)

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

假如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;

console.log(str.match(pattern));

方法二:

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

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

console.log(str.match(pattern));

方法三:

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

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

console.log(str.match(pattern));

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

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

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

方法四:

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

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

console.log(str.match(pattern));

</script>

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-15

\<([a-zA-Z]{1,}) +class='view-field view-data-node-title'\> *\<([a-zA-Z]{1,}) +.*\>(.*)\</\2\>\</\1\>


试试, group3就是结果.

定位时把Class 考虑进去了, 因为不知道你的业务具体什么样.  如果你的标签连 class 这个属性都没有的话, 把 那个 去掉.

追问

不是特定匹配,而是任何一段html标签都能匹配,可以去掉标签这样实现,也能直接获取之间的内容这样实现

追答

你写几个边界的例子,
这样说不容易理解.

本回答被提问者和网友采纳
第2个回答  2014-12-09
(?<=>)[^<>]+(?=<)
相似回答