首 页 ┆ 源码下载 ┆ IT学院 ┆ 字体下载 ┆ 模板下载 ┆ 源码发布 ┆ 广告合作 ┆ 网站地图 ┆ 虚拟主机 ┆ 中文域名
► 设为首页
► 加入收藏
► 联系我们
源码下载 >> ASP源码 | PHP源码 | ASP.net源码 | JSP源码 | CGI源码 | VC/C++源码 | VB源码 | Delphi源码 | Flash源码
文章学院 >> 网络编程 | 网页设计 | 图形图象 | 数据库 | 服务器 | 网络媒体 | 网络安全 | 操作系统 | 办公软件 | 软件开发 | 黑客知识
字体下载 >> 精制字体 | 非英字体 | 艺术字体 | 著名字体 | 哥特式 | 简单字体 | 手写体 | 节假日 | 图案字体 | 精度像素 | 中文字体
模板下载 >> 企业门户 | 数码网络 | 休闲娱乐 | 影视音乐 | 旅游名胜 | 文化艺术 | 电子商务 | 个性展示 | 登陆导航 | Flash模板
►►您当前的位置:源码园 → IT学院 → 网络编程 → JSP专区 → 文章内容

正则表达式的概述及在JAVA中的使用方法

作者:未知  来源:网上收集  发布时间:2007-7-1 1:40:48

正则表达式的作用

提供更强大的字符串处理能力,测试字符串内的模式,例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或身份证号码模式。即数据验证替换文本可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。

基于模式匹配从字符串中提取子字符串可以查找文档内或输入域内特定的文本。

在JAVA中使用正则表达式

正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持,jdk1.4中加入了java.util.regex包提供对正则表达式的支持。而且Java.lang.String类中的replaceAll和split函数也是调用的正则表达式来实现的。

正则表达式对字符串的操作主要包括:

1.字符串匹配

2.指定字符串替换

3.指定字符串查找

4.字符串分割

Pattern类

Pattern类的实例表示以字符串形式指定的正则表达式,其语 法类似于Perl所用的语法。

用字符串形式指定的正则表达式,必须先编译成Pattern类的 实例。生成的模式用于创建Matcher对象,它根据正则表达式与任 意字符序列进行匹配。多个匹配器可以共享一个模式,因为它是非专属的。

用compile方法把给定的正则表达式编译成模式,然后用 matcher方法创建一个匹配器,这个匹配器将根据此模式对给定输 入进行匹配。pattern 方法可返回编译这个模式所用的正则表达式。

Matcher类

通过调用某个模式的matcher方法,从这个模式生成匹配器。 匹配器创建之后,就可以用它来执行三类不同的匹配操作:

matches方法根据此模式,对整个输入序列进行匹配。

lookingAt方法根据此模式,从开始处对输入序列进 行匹配。

find方法扫描输入序列,寻找下一个与模式匹配的地方。

这些方法都会返回一个表示成功或失败的布尔值。如果匹配成功,通过查询 匹配器的状态,可以获得更多的信息。

构建正则表达式

\d 等於 [0-9] 数字

\D 等於 [^0-9] 非数字

\s 等於 [ \t\n\x0B\f\r] 空白字符

\S 等於 [^ \t\n\x0B\f\r] 非空白字符

\w 等於 [a-zA-Z_0-9] 数字或是英文字

\W 等於 [^a-zA-Z_0-9] 非数字与英文字

$ 表示每行的结尾

. 匹配所有字符,包括空格、Tab字符甚至换行符

| 或 []方括号只允许匹配单个字符

^ 符号称为否符号。如果用在方括号内,表示不想要匹配的字符。 表示每行的开头

( ) 形成一组

查询

import java.util.regex.*; public class RegexExample {     public static void main(String[] args)     {         String str="aaabc efg ABC";         String regEx="aaa|fff";         Pattern p=Pattern.compile(regEx);//编译成模式         Matcher m=p.matcher(str);//创建一个匹配器         boolean rs=m.find();         if(rs)         {             System.out.println("include!!!");         }         else         {             System.out.println("no include!!!");         }     } }

如果str中有regEx,那么rs为true,否则为flase。如果想在查找时忽略大小写,

则可以写成Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);

提取 (从本例所给完整路径中提取文件名)

import java.util.regex.*;public class RegexExample2 {     public static void main(String[] args)     {         String regEx=".+\\\\(.+)$";         String str="c:\\dir1\\dir2\\name.txt";         Pattern p=Pattern.compile(regEx);         Matcher m=p.matcher(str);         boolean rs=m.find();         for(int i=1;i<=m.groupCount();i++)         {             System.out.println(m.group(i)); //括号内匹配内容        }     } }

以上的执行结果为name.txt,提取的字符串储存在m.group(i)中,其中i最大值为m.groupCount();

分割

import java.util.regex.*; public class RegexExample3 {     public static void main(String[] args)     {         String regEx="::";         Pattern p=Pattern.compile(regEx);         String[] r=p.split("xd::abc::cde");         for(int i=0;i<r.length;i++)         {             System.out.println(r[i]);         }     } }

执行后,r就是{xd,abc,cde},其实分割时还有跟简单的方法:

String str="xd::abc::cde";

String[] r=str.split("::");

替换(删除)

import java.util.regex.*; public class RegexExample1 {     public static void main(String[] args)     {         String regEx="a+";//表示一个或多个a         Pattern p=Pattern.compile(regEx);         Matcher m=p.matcher("aaabbced a ccdeaa");         String s=m.replaceAll("A");         System.out.println(s);     } }

结果为"Abbced A ccdeA"

如果写成空串,既可达到删除的功能,比如:

String s=m.replaceAll("");

结果为"bbced ccde"


[] [返回上一页] [打 印]
  • 上一篇文章:新手入门:JSP动态网页技术的基本概述
  • 下一篇文章:新手必看:Windows下JSP开发环境的配置

  • 相关文章:
  • Java布局管理器使用方法
  • [图文]GRETA正则表达式模板类库
  • C++指针使用方法解惑
  • [图文]教你使用正则表达式
  • [图文]正则表达式简介
  • 水晶报表在VC++6.0中的简单使用方法
  • [图文]Windows XP中默认帐户安全使用方法
  • LINUX下变态下载的安装使用方法
  • [图文]attachMovie 函数的使用方法教程
  • [图文]getURL函数的使用方法指南
  • 我的黑色工具箱—几款黑客工具的使用方法--黑色工具...
  • 黑色工具箱:几款黑客工具的使用方法--黑客,工具箱,工...
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 源码发布
Copyright © 2003-2009 Ymyasp.Com. All Rights Reserved .
备案序号:粤ICP备07029071号