package com.ez; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ZYJ { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // String htmlStr = "<b><font www=\"red\" pp='oo'>aaaaa</font><font www=\"red\" pp='oo'>aaaaa</font></b> "; String htmlStr = "<b><a href='http://www.baby.com' pp='oo'/><a href =\"http://www.baby.com\" pp=\"o\">welcome</a></b> "; System.out.println("zyj "+ZYJ.updateHtmlTag(htmlStr, "a", "href","http://www.redirect.com/xxx?url=" , "?xx=ss\"")); } /** * @param htmlStr html文本 * @param searchTag 要修改的目标标签 * @param searchAttrib 目标标签中的属性 * @param newStr 修改值 */ public static String updateHtmlTag(String htmlStr, String searchTag, String searchAttrib,String startStr , String endStr) { String regxpForTag ="<\\s*" + searchTag + "\\s+([^>]*)\\s*>"; String regxpForTagAttrib = searchAttrib + "\\s*=\\s*[\"|']http://([^\"|']+)[\"|']";//"=[\"|']([^[\"|']]+)[\"|']"; Pattern patternForTag = Pattern.compile(regxpForTag); Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib); Matcher matcherForTag = patternForTag.matcher(htmlStr); StringBuffer sb = new StringBuffer(); boolean result = matcherForTag.find(); while (result) { StringBuffer sbreplace = new StringBuffer("<"+searchTag +" "); System.out.println(matcherForTag.group(1)); Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag .group(1)); if (matcherForAttrib.find()) { System.out.println("ll"+matcherForAttrib.group(1)); matcherForAttrib.appendReplacement(sbreplace, searchAttrib+"=\"" +startStr + matcherForAttrib.group(1) + endStr); } // matcherForTag.appendReplacement(sb, sbreplace.toString()); matcherForAttrib.appendTail(sbreplace); matcherForTag.appendReplacement(sb, sbreplace.toString()+">"); result = matcherForTag.find(); } matcherForTag.appendTail(sb); return sb.toString(); } }
参考:
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]属性值[/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();
}
}
相关推荐
java正则表达式过滤html标签是指使用java语言中的正则表达式来过滤html标签的操作。HtmlRegexpUtil这个工具类提供了多种过滤html标签的方法,包括过滤所有以"开头以">"结尾的标签、找出IMG标签、找出IMG标签的SRC...
Java正则表达式是编程语言Java中用于处理字符串的强大工具,它允许程序员通过简洁的语法进行复杂的文本匹配、查找、替换和验证。自从Java 1.4引入`java.util.regex`包以来,Java程序员就可以方便地使用正则表达式来...
总结来说,通过理解正则表达式的语法以及JavaScript的`replace`方法,我们可以高效地处理HTML字符串中的img标签,并实现src属性的批量替换。这种技术在处理动态生成的HTML或者数据转换时非常有用。在实际应用中,...
正则表达式是 Java 中非常重要的一种技术,广泛应用于字符串处理、数据提取、格式验证等领域。在 HTML 处理中,正则替换 img 标签中 src 值的方法尤其重要,本文就将介绍一种使用 Java 实现的方法。 什么是正则...
在JAVA中,我们可以使用`java.util.regex`包来处理正则表达式,用于匹配和提取HTML中的URL。正则表达式可以精确地定义URL的模式,例如:`http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-...
在解析网页时,正则表达式常用于提取HTML标签中的特定内容,例如链接、日期、价格等。通过熟练掌握正则表达式的语法和用法,开发者可以高效地从复杂的HTML代码中抽取所需信息。 接着,Jsoup是一个Java库,专为处理...
在本留言本中,可能使用了UBB代码解析器,将用户输入的UBB标签转换成对应的HTML标签,以显示格式化效果。此外,程序还支持表情,这可能是通过预定义的一系列表情代码,将其转换为对应的图片,增加互动性和趣味性。 ...
正则表达式`"^* align=\"center\" class=tdc2>(.*)$"`是用于从HTML源代码中提取特定格式的文本,即归属地信息所在的TD标签中的内容。`Pattern`和`Matcher`类是Java中处理正则表达式的工具,它们可以编译正则表达式并...
本示例代码利用了Java正则表达式与`java.util.regex`包中的`Pattern`和`Matcher`类来完成这一任务。 #### 示例代码详解 ##### 正则表达式 1. **匹配`<img>`标签**: ```java String regEx_img = "*src=(.*?)[^>]...
在Java编程语言中,处理HTML标签是常见的需求,特别是在数据清洗、文本提取或者邮件处理等场景。本篇文章将深入探讨如何使用Java中的`String`类提供的`replaceAll()`方法来替换HTML标签。 首先,我们来看一下给出的...
1. **正则表达式匹配HTML标签**:使用`Pattern`类编译正则表达式,该表达式用于匹配所有的HTML标签和可能存在的自定义标记(如大括号包围的文本)。这里的关键是利用`Pattern.CASE_INSENSITIVE`标志来确保大小写不...
在这个例子中,`text`变量现在包含了去除了HTML标签的纯文本:"标题 这是内容。" 4. 处理特殊情况:如果需要更复杂的处理,比如保留某些标签的格式(如段落),可以使用`outerHtml()`方法结合正则表达式进行处理。...
innerHTML是符合W3C标准的属性,而innerText只适用于IE浏览器,因此,尽可能地去使用innerHTML,而少用innerText,如果要输出不含HTML标签的内容,可以使用innerHTML取得包含HTML标签的内容后,再用正则表达式去除...
如果只想替换特定类型的标签,如`<p>`和`<img>`,可以修改正则表达式为`(<(?i)(p|img)[^]*/?>)`。如果只需要替换`<a>`标签,则正则表达式应改为`(<(?i)a[^]*/?>)`。 需要注意的是,这种方法并不适用于...
4. **正则表达式**:在某些情况下,可能需要使用正则表达式来进一步处理抓取到的数据,如提取特定格式的文本、去除HTML标签等。 5. **多线程与异步处理**:为了提高爬虫效率,可以使用多线程或者异步处理技术,比如...
以下是一些常见的`<input>`标签属性用于自校验: 1. **type**:定义输入类型,如`text`、`email`、`password`等。不同的类型会自动进行相应的校验,比如`email`会检查是否符合电子邮件格式。 2. **required**:...
在实际应用中,结合正则表达式和Xpath或CSS选择器,可以实现强大的网页数据提取能力。 总之,`Html_Parser.zip` 提供了一个第三方的Java HTML解析解决方案,包含了必要的源码、文档、库文件和许可信息,使得开发者...
这涉及到Java I/O流、文件系统操作、正则表达式、HTML解析库的使用等技能。 总的来说,这个工具涉及的知识点包括: 1. HTML和JSP基础知识 2. 文件系统操作(遍历目录,读写文件) 3. HTML解析(如使用Jsoup库) 4. ...
理解HTML标签和属性,以及如何使用DOM解析器如Jsoup来提取数据,是编写爬虫的基本技能。 3. **正则表达式**:正则表达式用于匹配和提取字符串中的特定模式,常用于从HTML文本中提取所需信息。 4. **线程和并发**:...