`

正则表达式匹配替换网址

 
阅读更多
有这么一个需求,

网页里所有的src="/web/inde.jsp"src后面引号里面的网址全部添加为“www.baidu.com/web.inde.jsp”
另外<link >下的href也是同样。。
遇到里面是http:  www.  https:这样的不能替换

正则式为
s*(<LINK\\s+.+?href=|src=)\\s*['|\"]\\s*((?!http:|https:|www\\.).+?)['|\"]
关键点为 消除正则的惰性和负向预查


引用

说明            正则表达式               匹配结果 $1
普通表达式 windows 98|2000|2003 windows 98 windows 2000 windows 2003
后向引用,获取匹配 windows (98|2000|2003) windows 98 windows 2000 windows 2003 98,2000,2003
非获取匹配 windows (?:98|2000|2003) windows 98 windows 2000 windows 2003
正向预查,非获取匹配 windows (?=98|2000) windows 98 windows 2000 windows 2003
负向预查,非获取匹配 windows (?!98|2000) windows 98 windows 2000 windows 2003

<LINK rel="stylesheet" href="style_new.css" type="text/css">
 <TD width="59" height="45"><IMG src="www.aaa/top-images/internaluse_sticker.gif" width="59" height="45" border="0"></TD>
  <TD width="170" height="45"><A href="/"><IMG src="http:\\aaa/top-images/title.gif" border="0"></A></TD>
 <TD><A href="/fscripts/link.asp?url=/global/"><IMG src="/top-images/eng_site.gif" width="112" height="22" border="0" alt="English"></A></TD>


改为

<LINK rel="stylesheet" href="www.baidu.comstyle_new.css" type="text/css">
<TD width="59" height="45"><IMG src="www.aaa/top-images/internaluse_sticker.gif" width="59" height="45" border="0"></TD>
  <TD width="170" height="45"><A href="/"><IMG src="http:\\aaa/top-images/title.gif" border="0"></A></TD>
<TD><A href="/fscripts/link.asp?url=/global/"><IMG src="www.baidu.com/top-images/eng_site.gif" width="112" height="22" border="0" alt="English"></A></TD>

代码如下
public String parseTool(String file,String replaceText){
		
			Scanner scanner;
			BufferedWriter rf;
			String repText=replaceText;
			String resultTxt="e:/result.txt";//输出文件路径
			try {
			//"\\s[?=<LINK\\s+.*\\s+href=|?=src=]+\\s*['|\"]\\s*(((?!http:)(?!https:)(?!www\\.)).+?)[\'|\"]";
				scanner = new Scanner(new FileInputStream(file));
				String reg="\\s*(<LINK\\s+.+?href=|src=)\\s*['|\"]\\s*((?!http:|https:|www\\.).+?)['|\"]";
				
				//String reg="\\s*src=[\'|\"]([^www\\.].+?)[\'|\"]";//
				String str;
				Pattern pattern;
				Matcher matcher;
				int status=0;
				String str0;
				
				rf =new  BufferedWriter( new FileWriter(resultTxt));
				while(scanner.hasNextLine()){
					str=scanner.nextLine();
					str0=str;
					pattern = Pattern.compile(reg);
					matcher = pattern.matcher(str);
						while (matcher.find()) {
						   status=1;
						   //System.out.println (matcher.group(2));
						   str=str.replaceAll(matcher.group(2),repText+matcher.group(2));
						}//while-find
						if(status==1){
							 rf.write(str);
						}else if(status==0){
							 rf.write(str0);
						}
						 rf.write("\r\n");
					//status=0;
					
				}//while-hasnext
				
				   rf.flush();//输出
				   rf.close(); //关闭输出流
			} catch (FileNotFoundException e) {
				
				e.printStackTrace();
				return "FileNotFinded.";
			} catch (IOException e) {
				e.printStackTrace();
				return "IOError.";
			}
			   return "ok.";
	}
public static void main(String []args){
			String result;
			result=new mainClass().parseTool("e:/to.txt","www.baidu.com");
			
			//result=new mainClass().parseTest("e:/to.txt","www.baidu.com");
			System.out.println("--"+result);
		
	}
分享到:
评论

相关推荐

    wps表格excel正则工具,excel正则表达式替换/匹配/查找/搜索/提取数字

    而本软件正是把强大的正则功能完美地添加到表格中,让 Excel、WPS 支持正则表达式的搜索、匹配提取、替换、定位等,让数据处理能力进化一个层次! 让 Office Excel、WPS 表格支持正则表达式的免费插件:「Excel ...

    常用java正则表达式

    如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...

    易语言正则表达式类匹配中文

    易语言正则表达式类匹配中文源码,正则表达式类匹配中文,创建,取正则文本,替换,取匹配数量,取匹配文本,取子匹配文本,取子匹配数量

    Python程序设计:正则表达式检索与替换.pptx

    正则表达式处理字符串主要有四大功能,匹配、获取、替换和分割: 匹配 的功能是查看一个字符串是否符合正则表达式的语法,一般返回true或者false; 获取 的功能是正则表达式来提取字符串中符合要求的文本; 替换 的...

    使用正则表达式的模式匹配

    JavaScript的RegExp类表示正则表达式,而String和RegExp都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。 ECMAScript v3对JavaScript正则表达式进行了标准化。JavaScript 1.2实现了ECMAScript v3...

    jJAVA正则表达式替换字符

    本资源文件是我自己总结的,其中包括5个类,这5个类的代码基本...用正则表达式替换字符串内容,使用正则表达式切割字符串,字符串匹配,将字符串“&lt;msg&gt;ha&gt;ve modif”中的&gt;替换为&gt;将&lt;替换为&lt;将&替换为2. 等等情况!

    JS正则表达式的使用以video标签为例

    使用JS正则表达式,选取video元素的src属性的值,利用jQuery选取元素

    Delphi 10.4 最新版正则表达式(TRegExpr)源码

    正则表达式易于使用,功能强大,可用于复杂的搜索和替换以及基于模板的文本检查。这对于输入形式的用户输入验证特别有用-验证电子邮件地址等。您还可以从网页或文档中提取电话号码,邮政编码等,在日志文件中搜索...

    正则表达式测试工具C#版(src)

    正则表达式测试工具C#完整源码,包括查找和替换功能,标注显示匹配结果。

    RegexDesigner.NET 正则表达式开源工具 支持中文 修改版

    正则表达式匹配,替换,分割。 6. 正则表达式项目,以保存表达式,文字,以匹配所有的regex选项。 7. 为所有正则操作生成C#和VB.NET代码 8. 生成编译的程序集 9. 联机帮助。 该版本为修改版。支持中文,且...

    正则表达式测试工具,美观功能强大!

    3、支持正则表达式匹配与替换,子匹配单独显示,单独选择 4、支持正则表达式的历史记录与收藏,如百度搜索自动显现 5、靠边隐藏 详情见博文:https://blog.csdn.net/weixin_44182128/article/details/122676797

    SQLServer中使用正则表达式

    /*********使用方法**************/ --正则校验(符合为1,... --正则匹配(匹配不为空,不匹配为空) SELECT [dbo].[Regex.Match]('\d+','abcdefghijkl') 不能匹配, [dbo].[Regex.Match]('\d+','0123456789') 能匹配

    JAVA 正则表达式 教程

    正则表达式善于处理文本,对匹配、搜索和替换等操作都有意想不到的作用。正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率。 正则表达式应用于程序设计语言中,...

    正则表达式(regex)C语言源码,超强查找/替换算法

    正则表达式是一个很强的工具,可以在你的软件中增强查找、替换、匹配等功能。附件中封装了Henry Spencer的regex library源码,有说明和范例,纯C可移值,简单易用。

    精通正则表达式(第3版)(含awz3 mobi epub)

    本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、Java、.NET、PHP中的用法。 本书自第1 版开始着力于教会读者“以正则表达式来思考”,来让读者...

    正则表达式匹配,替换,查找

    上篇文章给大家介绍了Java正则表达式匹配,替换,查找,切割的方法,接下来,通过本篇文章给大家介绍js 正则匹配、查找与替换,具体内容请看下文。 js 正则匹配、查找与替换 RegExp对象RegExp对象表示正则表达式,它...

    “正则表达式以及python re模块”演讲PPT

    PPT 讲述了正则表达式的使用方式以及如何使用python来操作正则表达式,内容简洁实用,适合平时查询,也适合PPT演讲使用~

    正则表达式使用详解及使用实例

    简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或sed shell程序等。此外,象...

    PHP正则表达式匹配替换与分割功能实例浅析

    本文实例讲述了PHP正则表达式匹配替换与分割功能。分享给大家供大家参考,具体如下: 正则表达式在PHP中的作用主要包括:分割、匹配、查找与替换。 匹配功能 preg_match_all 全部匹配函数 preg_match_all (string ...

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    其他的正则表达式匹配.php 其他的正则表达式匹配 取得正则表达式的全部匹配.php 取得正则表达式的全部匹配 返回与模式匹配的数组单元.php 返回与模式...

Global site tag (gtag.js) - Google Analytics