`

正则表达式 之过滤注释

    博客分类:
  • Java
阅读更多

使用java 正则表达式如何过滤掉注释呢?

 如上图所示,如何去掉注释呢?

@Test
	public void test_deleteCommen(){
		String input="b<!-- step的属性seq是 从1 开始的正整数 -->a";
		System.out.println(input.replaceAll("<!--[^<>]*-->", ""));
	}

 运行结果:

 达到预期效果了.

但是

@Test
	public void test_deleteCommen(){
		String input="b<!-- >step的属性seq是 从1 开始的正整数 -->a";
		System.out.println(input.replaceAll("<!--[^<>]*-->", ""));
	}

 运行结果:

 没有达到预期的结果,为什么呢?因为注释中多了>

如何解决呢?

 

@Test
	public void test_deleteComment2(){
		String input="b<!-- >step的属性seq是 从1 开始的正整数 -->a";
		String regex="<!--"+ValueWidget.otherwise22("-->")+"-->";
		System.out.println(input.replaceAll(regex, ""));
	}

 运行结果:

ba

达到预期了.

方法otherwise22 的实现如下:

/***
	 * 不包含
	 * @param regex
	 * @return
	 */
	public static String otherwise22(String regex){
		int length=regex.length();//共有length * length种情况
		String[][] arr2=new String[length][];
		for(int i=0;i<length;i++){
			String[] arr3=new String[2];
			arr3[0]=String.valueOf(regex.charAt(i));
//			if(arr3[0].equals("*")){
//				arr3[0]="\\*";
//			}
			arr3[1]="[^"+arr3[0]+"]";
//			System.out.println(arr3[0]+" "+arr3[1]);
			arr2[i]=arr3;
		}
//		String[]result=new String[2^3];
//		for(int i=0;i<length;i++){
//			result[i]=arr2[i][0];
//		}
		//   \u4E00-\u9FA5 是为了匹配汉字
		String normal="[\\w\u4E00-\u9FA5\\s\"']*?";
		List<StringBuffer> list33=assemble(arr2,true);
		int length22=list33.size();
		StringBuffer sbu=new StringBuffer("(");
		for(int i=1;i<length22;i++){
			sbu.append(normal).append(list33.get(i)).append(normal);
			if(i!=length22-1){
				sbu.append("|");
			}
		}
		sbu.append(")");
//		System.out.println(list33);
		
		return sbu.toString();
		
	}

/***
	 * 
	 * @param a
	 * @param aa
	 * @param index : 初始值为0
	 */
	private static List<StringBuffer> cc(String[][] aa,int index,List<StringBuffer> list,boolean isDealRegex){
		
		if(index>=aa.length){//说明已经遍历完成
			return list;//并不是每次循环都会执行,最后才会执行此语句.
		}
		String cc[]=aa[index];
		int length=cc.length;
		List<StringBuffer> listNew=new ArrayList<StringBuffer>();
		if(list==null||list.size()==0){//首次循环
			for(int i=0;i<length;i++){//必须保证顺序,所以不能使用 foreach
				if(isDealRegex && cc[i].equals("*")){
					cc[i]="\\*";
				}
				if(isDealRegex){
					listNew.add(new StringBuffer(cc[i]+"?"));
				}else{
					listNew.add(new StringBuffer(cc[i]));
				}
				
			}
		}else{
			for(int i=0;i<length;i++){//必须保证顺序,所以不能使用 foreach
				for(int j=0;j<list.size();j++){//必须保证顺序,所以不能使用 foreach
					StringBuffer sb=list.get(j);
					StringBuffer sb2=new StringBuffer(sb);
					if(isDealRegex && cc[i].equals("*")){
						cc[i]="\\*";
					}
					if(isDealRegex  ){
						sb2.append(cc[i]+"?");
					}else{
						sb2.append(cc[i]);
					}
					listNew.add(sb2);
				}
			}
		}
		List<StringBuffer> list33=cc(aa, ++index, listNew,isDealRegex);
		if(!ValueWidget.isNullOrEmpty(list33)){
			return list33;
		}
		return null;
	}
	/***
	 * 组合
	 * @param aa
	 * @return
	 */
	public static List<StringBuffer>assemble(String[][] aa,boolean isDealRegex){
		return cc(aa, 0, null,isDealRegex);
	}

 

 源代码见附件io0007-find_progess-0.0.8.5-SNAPSHOT-sources.jar

 

  • 大小: 52.4 KB
  • 大小: 9.1 KB
  • 大小: 10.2 KB
分享到:
评论

相关推荐

    php过滤HTML标签、属性等正则表达式汇总

    主要介绍了php过滤HTML标签、属性等正则表达式汇总,本文使用代码实例给出了过滤HTML内容的正则表达式,具体说明请参阅代码中的注释,本文对使用PHP做采集的朋友有比较大的作用,需要的朋友可以参考下

    js过滤HTML标签完整实例

    主要介绍了js过滤HTML标签实现方法,以完整实例形式分析了JavaScript使用正则表达式过滤HTML标签的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    schleichfahrt:一个简单的 bukkit 插件,用正则表达式过滤日志输出

    施莱希法尔特一个简单的 bukkit 插件,用正则表达式过滤日志输出。 插件文件夹中的文件“filters.txt”包含正则表达式过滤器,每行一个。 以#开头的行被视为注释,而不是过滤器。 正则表达式语法正是语法。 CI ...

    Python天气预报采集器实现代码(网页爬虫)

    爬虫简单说来包括两个步骤:获得网页文本、过滤得到数据。... 复制代码 代码如下: ... 使用正则表达式时需要仔细观察该网页信息的结构,并写出正确的正则表达式。 python正则表达式的使用也很简洁。我的上一篇文章《Pyth

    PHP中过滤常用标签的正则表达式

    我们常常会用到PHP过滤一些标签的功能,比如过滤链接标签、过滤script标签等等,下面就介绍一下PHP过滤常用标签的正则表达式代码: $str=preg_replace(/\s+/, , $str); //过滤多余回车 $str=preg_replace(/&lt;[ ]+...

    c# 正则表达式对网页进行有效内容抽取

    去注释,正则为: output = Regex.Replace(input, @”&lt;!–[^-]*–&gt;”, string.Empty, RegexOptions.IgnoreCase); 2.去script,正则为: ouput = Regex.Replace(input, @”[removed]]*?&gt;.*?&lt;/script

    nsdpy

    使用NucleoPy,用户可以: 搜索NCBI核苷酸数据库下载与搜索结果相对应的fasta文件或cds_fasta文件根据分类对序列进行排序通过提供一个或多个正则表达式作为过滤器,根据基因名称过滤序列工作流程安装pip3 install ...

    cloud-trail-hipchat-lambda:Lambda函数基于S3中的Cloud Trail日志发送HipChat消息

    此正则表达式过滤所有以Describe或List开头的事件。 您可以调整此正则表达式以过滤或匹配要显示在HipChat中的任何事件。 source var相似,但是用于选择消息的来源。 默认是捕获所有内容( . ),但是您可以根据自己...

    phpstorm 正则匹配删除空行、注释行(替换注释行为空行)

    当然想到了强大的正则匹配(regExp regular expression), 通过写一个正则表达式,来查找出所有的注释行,并将其替换成空,即实现了需求。 1. ctrl + F , 输入正则表达式:(//.*$)|(/*(.|s)*?*/) 2. ctrl + R, 不...

    VB增强搜索插件 v1.5.0.52

    修改了在执行正则表达式全部替换的时候失败,并提示错误的问题. 搜索过程中关闭对话框不再允许关闭搜索对话框. 修改了第一次显示过滤器的时候总是没有数据的问题. 增加了关于对话框 增加了检查新版本的功能 在...

    源代码计数器--控制台程序

    功能: 从命令行输入一个参数(指定目录或文件),输出该目录下指定类型文件(.cs, .java)的个数、每个文件的总行数、空行数、注释行数、代码行; 利用简易工厂模式,快速开发程序原型;...关键点是正则表达式的运用;

    膜:膜使用python表达式过滤VCF记录

    基于ANN进行过滤时,将首先过滤注释条目。 如果没有注释条目,则删除整个变体。vembrane filter过滤表达式过滤器表达式可以是任何有效的python表达式,其计算结果为bool 。 但是,可用的功能和符号已限于以下各项:...

    php正则去除网页中所有的html,js,css,注释的实现方法

    下面小编就为大家带来一篇php正则去除网页中所有的html,js,css,注释的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    JavaScript实战

    4.3.1 创建和使用基本的正则表达式 84 4.3.2 构建一个正则表达式 85 4.3.3 分组正则表达式的部分 88 4.3.4 有用的正则表达式 89 4.3.5 匹配模式 94 4.3.6 替换文本 96 4.3.7 尝试正则表达式 97 4.4 数值 97 4.4.1 把...

    Python删除Java源文件中全部注释的实现方法

    本文实例讲述了Python删除Java源文件中全部...# 过滤JAVA程序中的注释 # 如果字符串中有注释符号的话会有问题。 import os import re import io # 改这个目录!!! top_dir = E:\\java_comments_trim\\; # 状态 S_INIT

    VB6增强搜索插件 4.13.0.130

    选中正则表达式时,将整词匹配选项替换为单行模式选项 增加对正则表达式单行模式搜索/替换的支持 尝试不关闭窗口的代码高亮方式 选中多行时自动将搜索范围切换至选中内容 在卸载插件时删除全局对象的引用 完美...

    TfsNotificationRelay:TFS的可扩展插件,用于向Slack,HipChat和IRC发送通知

    正则表达式过滤集合,项目,存储库,分支等。 可配置的通知格式 通知链接回TFS Web中的事件 可扩展以支持其他目标 支持的活动 XAML构建完成 vNext构建完成* 建立质量变化 工作项目更新 团队项目的创建/删除 发布...

    nb:CLI纯文本笔记,书签和存档,以及加密,过滤和搜索,Git支持的版本控制和同步,Pandoc支持的转换等

    具有正则表达式支持的缓存网页内容的本地全文搜索, 标记, 方便的过滤和列表, 快照查找损坏的链接, 在终端和常规的Web浏览器中轻松查看已加书签的页面。 页面信息会自动下载,编译并保存到为人类制作的普通...

    haxor-news:像haxor一样浏览Hacker News:Hacker News命令行界面(CLI)

    过滤与正则表达式查询匹配的注释? -cq/--comments_query [query] 找工作或只是好奇那里有什么? 筛选每月的招聘人员和自由职业者帖子: $ hn hiring "(?i)(Node|JavaScript).*(remote)" &gt; remote_web_jobs.txt ...

Global site tag (gtag.js) - Google Analytics