`
daimojingdeyu
  • 浏览: 275230 次
  • 性别: 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  
太棒了,很实用啊

相关推荐

    【很好的】正则表达式入门教程

    正则表达式广泛应用于各种编程语言和工具中,如JavaScript、Python、Java、Perl、SQL等,可用于文本处理、数据清洗、表单验证等多个方面。 #### 六、后续学习资源 - **官方文档**:学习特定编程语言或工具的官方...

    解析SQL提取表名并输出文本文件

    如果作者计划进一步完善这个小工具,可能考虑的增强包括添加支持其他数据库系统(如MySQL、Oracle、PostgreSQL等,因为它们的SQL语法略有差异),处理SQL注释,支持多语句文件,以及增加参数选项,如输入和输出文件...

    JAVA_API1.6文档(中文)

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

    Java工程师必知必会.docx

    Java工程师必知必会是一个完整的Java课程体系,涵盖了Java语言基础、Oracle数据库的安装、配置、SQL、PL/SQL、JDBC入门等核心内容。该课程体系着重于企业真实案例驱动,通过专家讲师的带领,使学员能够独立开发和...

    Java 1.6 API 中文 New

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

    最近5年133个Java面试问题列表

    - **基础知识:** Java中的正则表达式用于模式匹配和文本处理。Java中的`java.util.regex`包提供了正则表达式支持,包括Pattern和Matcher类。熟练掌握正则表达式的语法可以帮助开发者更轻松地完成复杂的文本处理任务...

    java api最新7.0

    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 定义了用户...

    疯狂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 开发...

    JavaAPI中文chm文档 part2

    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参考文档]

    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 定义了用户界面...

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

    - 如何使用标记来增强正则表达式的功能。 - **18.10 使用带替换变量的子表达式** - 如何使用子表达式来进行字符串替换。 #### 二十、日期、时间和时间段操作 - **19.1 日期和时间类型** - XQuery支持的日期和...

    常用到的JS技术

    - **正则表达式的使用**: 正则表达式是进行字符串验证和操作的强大工具,上面已经提到了多个应用场景。 - **DOM操作**: 使用JavaScript操作DOM元素来进行页面的动态更新。 - **事件监听**: 通过添加事件监听器来响应...

    JDK_1_6 API

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

Global site tag (gtag.js) - Google Analytics