分享到:
发表于 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,b及c [a-z] 字符a、b,,,,,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} 出现n到m次 X{n}+ 出现n次 X{n,}+ 至少出现n次 X{n,m}+ 出现n到m次 X{n}? 出现n次 X{n,}? 至少出现n次 X{n,m}? 出现n到m次 XY X后跟Y X|Y X或Y 二.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:", 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)输入模式字符串 (2)输入待匹配的网址 (3)获取结果 |
|
楼主热贴
个性签名:无
|
发表于 2011-09-05 19:42:01 1楼 | |
![]() ========================= 我是来学习的,顺便来支持各路高手。 |
|
针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员 、 查看帮助 或 给我提意见