`
daimojingdeyu
  • 浏览: 272134 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

Java 正则表达式处理选项及SQL注释删除

    博客分类:
  • Java
阅读更多

常    量

等效的嵌入标志表达式

Pattern.CANON_EQ

Pattern.CASE_INSENSITIVE

(?i)

Pattern.COMMENTS

(?x)

Pattern.MULTILINE

(?m)

Pattern.DOTALL

(?s)

Pattern.LITERAL

Pattern.UNICODE_CASE

(?u)

Pattern.UNIX_LINES

(?d)

 

上表是java中的正则处理选项几个开关值。可以在使用Pattern类时使用表左侧的选项打开,也可以在使用右侧的嵌入方式,只要在正则表达式的开头加上上表的嵌入标志。

 

以去掉java文件中的注释为例:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.CharBuffer;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileChannel.MapMode;
import java.nio.charset.Charset;
import java.util.regex.Pattern;

/**
 * 删除本类的多行及单行注释
 * @author daimojingdeyu
 */
public class CommentDelete {
	
	public static void main(String[] args) throws IOException
	{
		File file = new File("src/CommentDelete.java");
		FileChannel channel = new FileInputStream(file).getChannel();
		MappedByteBuffer mb = channel.map(MapMode.READ_ONLY, 0, file.length());
		Charset ascii = Charset.forName("GBK");
		CharBuffer cb = ascii.decode(mb);
		// 方式1:使用Pattern.DOTALL|Pattern.MULTILINE打开单行模式和多行模式开关
		// Pattern p = Pattern.compile("/\\*.*?\\*/|^\\s*//.*?$", Pattern.DOTALL|Pattern.MULTILINE);

		// 方式2:使用内嵌的(?ms)打开单行和多行模式
		Pattern p = Pattern.compile("(?ms)/\\*.*?\\*/|^\\s*//.*?$");
		// 将注释替换成""
		String presult = p.matcher(cb).replaceAll("");
		System.out.println(presult);
	}
}

 

 方式1和方式2的代码分别使用了Pattern的标记和内嵌的标记完成对注释的匹配。

 

另外,最近搞了一下对SQL文件注释的删除,可以使用下面的表达式完成,目前较好用的,可以删除掉SQL文件中的

/*...*/的多行注释,和以 -- 开始的单行注释

Pattern p = Pattern.compile("(?ms)('(?:''|[^'])*')|--.*?$|/\\*.*?\\*/");
String presult = p.matcher(sqlString).replaceAll("$1");

 

分享到:
评论
1 楼 u011133216 2014-04-29  
太棒了,很实用啊

相关推荐

    JAVA_API1.6文档(中文)

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户...

    Java 1.6 API 中文 New

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面...

    java api最新7.0

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面...

    JavaAPI1.6中文chm文档 part1

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户...

    java jdk-api-1.6 中文 chmd

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户...

    JavaAPI中文chm文档 part2

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户...

    疯狂JAVA讲义

    1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6 1.3.2 Java程序的运行机制和JVM 6 1.4 开发...

    [Java参考文档]

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户...

    Java开发技术大全 电子版

    13.7.4正则表达式中的其他通用规则424 13.7.5使用技巧425 13.8Pattern类的使用426 13.9Matcher类的使用428 13.9.1匹配方法的使用429 13.9.2替换方法的使用430 13.9.3组匹配的使用431 13.9.4检验E-mail的合法...

    [Java参考文档].JDK_API 1.6

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面...

    JDK_1_6 API

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面...

    PHP3程序设计

    9.1 正则表达式定义 129 9.1.1 方括号表达式 130 9.1.2 转义字符 130 9.2 POSIX风格的函数 131 9.2.1 ereg 和eregi 131 9.2.2 ereg_replace 和eregi_replace 132 9.2.3 Split 133 9.3 PERL风格函数 134 9.3.1 模式定...

    XQuery权威指南(简码·扫描版)

     23.4 选项声明和扩展表达式  23.5 指定序列化参数 第24章 SQL用户的×Query  24.1 关系模型与XML数据模型  24.2 比较SQL语法和XQuery语法  24.3 结合SQL与XQuery  24.4 SQL/XML 第25章 XSLT用户的XQuery  ...

    javaSE代码实例

    13.5.1 正则表达式的基本语法 259 13.5.2 Pattern类简介 262 13.5.3 Matcher类简介 263 13.5.4 Pattern与Matcher类的综合应用 264 13.6 String类中正则式的应用 266 13.6.1 模式匹配检查 266 13.6.2 ...

    MySQL5.1参考手册官方简体中文版

    9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符...

    mysql官方中文参考手册

    9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符...

    MYSQL中文手册

    9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3...

Global site tag (gtag.js) - Google Analytics