我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > Java技术星空(中国) > java中正则表达式的简单介绍及应用
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

java中正则表达式的简单介绍及应用

214浏览 / 1回复

zolshangyong

zolshangyong

0
精华
2
帖子

等  级:Lv.5
经  验:5299
  • Z金豆: 0

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:湖北
  • 注  册:2011-07-06
  • 登  录:2011-09-10
发表于 2011-09-02 14:44:38
电梯直达 确定
楼主

正则表达式用于指定字符串的模式,你可以在任何时候需要定位匹配某种特定模式的字符串的时候使用正则表达式。

本文将简单介绍正则表达式及java中如何使用正则表达式,并给出一个应用正则表达式获得特定模式字符串的应用程序。

java实现正则表达式的应用程序一般使用到的包或类为:java.awt.Pattern,java.util.regex.*.

.满足java实现格式的正则表达式简单介绍

单个字符匹配

x 单个字符

t \n \r \f \a \e \cx 对应转移字符

字符集合匹配

[abc] a,b或者c

[^abc] a,bc

[a-z] 字符ab,,,,,z,类似有:[0-9],[A-Z]

[^c-g] c,d,e,,,,,g.

[A&&B]

预定义的字符

\d 数字[0-9]

\D [^0-9]

\s 空白字符

\S 非空白字符

\w [a-zA-Z_0-9]

\W 非字[^w]

X? 出现0次或1

X* 出现0次或多次

X+ 至少出现1

(说明:上述?*都是匹配最少次数,如果要匹配最多次数,则对应为:X?+,X*+

X{n} 出现n

X{n,} 至少出现n

X{n,m} 出现nm

X{n}+ 出现n

X{n,}+ 至少出现n

X{n,m}+ 出现nm

X{n}? 出现n

X{n,}? 至少出现n

X{n,m}? 出现nm

XY X后跟Y

X|Y XY

.java实现步骤

1.设定正则表达式

String patternString=”.....”;

2.编译获得Pattern

Pattern pattern=Pattern.compile(patternString).

3.设定待匹配字符串

String temp=”......”;

4.匹配

Mather matcher=pattern.matcher(temp)

5获得满足正则表达式的字符串

while(matcher.find())

{

int start=matcher.start();

int end=matcher.end();

String t=temp.subString(start,end);

System.out.println(t);

}

.java应用实例

本程序实现功能:读取网页中满足正则表达式的所有字符串信息(其中正则表达式和待匹配的网页由用户输入)

import javax.swing.JOptionPane;

public class URLMatch1

{

public static void main(String[] args)

{

try{

String urlString;

String patternString;

patternString=JOptionPane.showInputDialog(null,"Enter the pattern string:",java中正则表达式的简单介绍及应用图片1);

urlString=JOptionPane.showInputDialog(null,"Enter the URL:","http://www.baidu.com");


InputStreamReader inputStreamReader=new InputStreamReader(new URL(urlString).openStream());

StringBuilder input=new StringBuilder();

int ch;

while((ch=inputStreamReader.read())!=-1)

input.append((char)ch);

Pattern pattern=Pattern.compile(patternString,Pattern.CASE_INSENSITIVE);

Matcher matcher=pattern.matcher(input);


String result="";

while(matcher.find())

{

int start=matcher.start();

int end=matcher.end();

String match=input.substring(start,end);

result=result+"n"+match;

}

JOptionPane.showMessageDialog(null,result);

}

catch(Exception e){

System.out.println("error:n"+e.toString());

}

}

}

程序运行结果图:

(1)输入模式字符串

java中正则表达式的简单介绍及应用图片2

(2)输入待匹配的网址

java中正则表达式的简单介绍及应用图片3

(3)获取结果
java中正则表达式的简单介绍及应用图片4




ZOL网友18367...

ZOL网友18367363


精华

帖子

等  级:Lv.7
经  验:16861
发表于 2011-09-05 19:42:01 1楼
对 楼主 zheng565407548 说:
=========================

我是来学习的,顺便来支持各路高手。
高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表