动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Java传说之风云再起.
.John Hancock互助人寿保险公司.
.Java智能卡基础篇—未来Java平台.
.PowerFolder 工作流服务器版本0..
.Struts ‘s Tiles 使用入门完全攻.
.java设计模式之 Proxy(代理).
.struts构建文件上传(三).
.谈谈TCP和UDP的一些简单应用.
.关于SOA 的五种资产重用最佳实践.
.Java Servlet 编程及应用之四.
.菜鸟必知!关于GNU/Java的背景解.
.分享搞定的CLOB字段存取的代码.
.Eclipse3.0的swt编程.
.Castor -- 将Java对象和XML自动绑.
.经典收藏:J2ME Game的开发笔记.
.wtp-all-in-one-0.7-win32.
.jira keygen.
.Java Applet编程入门之一.
.JFC/Swing活学活用系列之定制JLi.
.TortoiseSVN从1.2.6升级到1.3.2过.

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

文章类别:Java教程 | 发表日期:2008-1-5 |


正则表达式的作用

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

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

在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="aaafff"; 
        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"



上一篇:Java程序把Word文档直接转换成HTML文件 人气:369
下一篇:使用技巧:对Java编程中的文件操作详解 人气:282
点击此处浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-16 乘风多用户PHP统计系统 v3.4
2008-5-16 轩溪下载系统 v3.78 build 0515
2008-5-16 普沙B2B 浙江省商贸网 v2.0
2008-5-16 asp抓蜘蛛的小程序 v1.0
2008-5-16 齐齐乐网私服发布站 仿haosf新版
2008-5-16 IssTech信息反馈系统 v1.0
2008-5-16 自由领域大头贴(js接口版) 修正版
2008-5-16 医院网站系统
2008-5-16 智拓-分类信息管理系统 v5.0
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報