html标签正则(html正则匹配)
华为云服务器特价优惠火热进行中! 2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。
合作流程: |
今天给各位分享html标签正则的知识,其中也会对html正则匹配进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
微信号:cloud7591如需了解更多,欢迎添加客服微信咨询。
复制微信号
本文目录一览:
- 1、正则表达式匹配html标签,获取标签内容
- 2、正则匹配html开始标签和结束标签
- 3、用正则表达式过滤HTML标签
- 4、正则表达式匹配HTML标签之间的内容
- 5、正则表达式如何过滤HTML标签中的属性值
- 6、如何用正则表达式去掉html标签
正则表达式匹配html标签,获取标签内容
假设我们要获取下面html标签中的内容:
第一段是获取 p/p 标签内部的数据,第二个是获取 pspan/span/p 标签中的数据,其中span标签中有style属性值。
使用过正则表达式的同学肯定知道,上面两种情况其实都是一种情况,我们要获取的是 尖括号括起来的一对标签 中间的数据,起始标签形如x,结束标签形如/x,这里的x表示的html标签。
此外,我们还需要考虑起始标签中包含style的数据,另外特殊的 br/ 标签,对实际获取数据无意义,也需要过滤掉。
通过上面的分析,我们可以如下正则表达式:
在使用正则表达式处理之前,我们先对数据进行预处理,比如style和
标签:
针对多个标签嵌套的情况进行处理,比如 pspan style="white-space: normal;"王者荣耀/span/p ,在经过预处理和正则匹配的后结果是 span王者荣耀 ,需要手工移除掉前面的起始标签,对应的方法如下:
测试方法如下:
output:

正则匹配html开始标签和结束标签
Html标签是支持嵌套的,怎么能够找到指定标签相对应的闭合标签是最重要的问题。
思路:先匹配最前面的起始标签,假设是div(div),接着一旦遇到嵌套div,就“压入堆栈”,后面如果遇到div闭合标签了,就“弹出堆栈”。如果遇到闭合标签的时候,堆栈里面已经没有东西了,那么匹配结束,此结束标签为正确的闭合标签。
1、匹配任意闭合HTML标签的正则表达式
(?HtmlTag[\w]+)[^]*?((?Nested\kHtmlTag[^]*)|/\kHtmlTag(?-Nested)|.*?)*/\kHtmlTag
2、如果只想匹配div标签,可以使用下面的正则表达式:
(?HtmlTagdiv)[^]*?((?Nested\kHtmlTag[^]*)|/\kHtmlTag(?-Nested)|.*?)*/\kHtmlTag
3、如果想同时匹配多个HTML标签,可以使用下面的正则表达式
(?HtmlTag(div|span|h1))[^]*?((?Nested\kHtmlTag[^]*)|/\kHtmlTag(?-Nested)|.*?)*/\kHtmlTag
4、如果想匹配包含ID的标签,可以使用下面的正则表达式:
(?HtmlTag[\w]+)[^]*\s[iI][dD]=(?Quote["']?)footer(?(Quote)\kQuote)[^]*?(/|((?Nested\kHtmlTag[^]*)|/\kHtmlTag(?-Nested)|.*?)*/\kHtmlTag)
用正则表达式过滤HTML标签
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* p
* Title: HTML相关的正则表达式工具类
* /p
* p
* Description: 包括过滤HTML标记,转换HTML标记,替换特定HTML标记
* /p
* p
* Copyright: Copyright (c) 2006
* /p
*
* @author hejian
* @version 1.0
* @createtime 2006-10-16
*/
public class HtmlRegexpUtil {
private final static String regxpForHtml = "([^]*)"; // 过滤所有以开头以结尾的标签
private final static String regxpForImgTag = "\\s*img\\s+([^]*)\\s*"; // 找出IMG标签
private final static String regxpForImaTagSrcAttrib = "src=\"([^\"]+)\""; // 找出IMG标签的SRC属性
/**
*
*/
public HtmlRegexpUtil() {
// TODO Auto-generated constructor stub
}
/**
*
* 基本功能:替换标记以正常显示
* p
*
* @param input
* @return String
*/
public String replaceTag(String input) {
if (!hasSpecialChars(input)) {
return input;
}
StringBuffer filtered = new StringBuffer(input.length());
char c;
for (int i = 0; i = input.length() - 1; i++) {
c = input.charAt(i);
switch (c) {
case '':
filtered.append("");
break;
case '':
filtered.append("");
break;
case '"':
filtered.append(""");
break;
case '':
filtered.append("");
break;
default:
filtered.append(c);
}
}
return (filtered.toString());
}
/**
*
* 基本功能:判断标记是否存在
* p
*
* @param input
* @return boolean
*/
public boolean hasSpecialChars(String input) {
boolean flag = false;
if ((input != null) (input.length() 0)) {
char c;
for (int i = 0; i = input.length() - 1; i++) {
c = input.charAt(i);
switch (c) {
case '':
flag = true;
break;
case '':
flag = true;
break;
case '"':
flag = true;
break;
case '':
flag = true;
break;
}
}
}
return flag;
}
/**
*
* 基本功能:过滤所有以""开头以""结尾的标签
* p
*
* @param str
* @return String
*/
public static String filterHtml(String str) {
Pattern pattern = Pattern.compile(regxpForHtml);
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
boolean result1 = matcher.find();
while (result1) {
matcher.appendReplacement(sb, "");
result1 = matcher.find();
}
matcher.appendTail(sb);
return sb.toString();
}
/**
*
* 基本功能:过滤指定标签
* p
*
* @param str
* @param tag
* 指定标签
* @return String
*/
public static String fiterHtmlTag(String str, String tag) {
String regxp = "\\s*" + tag + "\\s+([^]*)\\s*";
Pattern pattern = Pattern.compile(regxp);
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
boolean result1 = matcher.find();
while (result1) {
matcher.appendReplacement(sb, "");
result1 = matcher.find();
}
matcher.appendTail(sb);
return sb.toString();
}
/**
*
* 基本功能:替换指定的标签
* p
*
* @param str
* @param beforeTag
* 要替换的标签
* @param tagAttrib
* 要替换的标签属性值
* @param startTag
* 新标签开始标记
* @param endTag
* 新标签结束标记
* @return String
* @如:替换img标签的src属性值为

属性值[/img]
*/
public static String replaceHtmlTag(String str, String beforeTag,
String tagAttrib, String startTag, String endTag) {
String regxpForTag = "\\s*" + beforeTag + "\\s+([^]*)\\s*";
String regxpForTagAttrib = tagAttrib + "=\"([^\"]+)\"";
Pattern patternForTag = Pattern.compile(regxpForTag);
Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib);
Matcher matcherForTag = patternForTag.matcher(str);
StringBuffer sb = new StringBuffer();
boolean result = matcherForTag.find();
while (result) {
StringBuffer sbreplace = new StringBuffer();
Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag
.group(1));
if (matcherForAttrib.find()) {
matcherForAttrib.appendReplacement(sbreplace, startTag
+ matcherForAttrib.group(1) + endTag);
}
matcherForTag.appendReplacement(sb, sbreplace.toString());
result = matcherForTag.find();
}
matcherForTag.appendTail(sb);
return sb.toString();
}
}
正则表达式匹配HTML标签之间的内容
(?=)[^]+(?=)
假如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
正则表达式如何过滤HTML标签中的属性值
1、过滤所有html标签的属性的正则表达式:
$search = array ("'script[^]*?.*?/script'si", // 去掉 JavaScript
"'[\/\!]*?[^]*?'si", // 去掉 HTML 标记
"'([\r\n])[\s]+'", // 去掉空白字符
"'(quot|#34);'i", // 替换 HTML 实体
"'(amp|#38);'i",
"'(lt|#60);'i",
"'(gt|#62);'i",
"'(nbsp|#160);'i"
); // 作为 PHP 代码运行
$replace = array ("","","\\1","\"","","",""," ");
$html = preg_replace($search, $replace, $html);
顶
如何用正则表达式去掉html标签
使用正则表达式去掉html标签的方法常用的正则表达式是:/[^]+?/g
1、定义含有html标签的字符串:
$text
=
'pTest
paragraph./p!--
Comment
--
a
href="#fragment"Other
text/a';
2、定义正则表达式并替换
$val
=
preg_replace('/[^]+?/g',
'
',
$row_get_Business['business_description']);
3、截取指定长度
$businessDesc
=
substr(val,0,110);
关于html标签正则和html正则匹配的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
