Java_正则表达式
来源:互联网 发布:java main函数 多线程 编辑:程序博客网 时间:2024/05/29 04:13
Java 正则表达式的总结和一些小例子
(http://www.cnblogs.com/xuemaxiongfeng/p/3236591.html)
字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现这些 目的,从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础工具,可以用于很多类型的文本处理, 如匹配,搜索,提取和分析结构化内容.
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher.
Pattern是一个正则表达式经编译后的表现模式。 在java中,通过适当命名的Pattern类可以容易确定String是否匹配某种模式.模式可以象匹配某个特定的String那样简单,也可以很复 杂,需要采用分组和字符类,如空白,数字,字母或控制符.因为Java字符串基于统一字符编码(Unicode),正则表达式也适用于国际化的应用程序.
Pattern类的方法简介
String[] split(CharSequence
input,int limit)
分隔字符串input,limit参数可以限制分隔的次数
Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。首先一个Pattern实例订制了一个所用语法与 PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。
Matcher类的方法简述
代码整理(马士兵)
import java.io.*;import java.util.regex.*;//正则表达式/*范例名称: * 原文件名称: * 要点: * 1. 正则表达式--处理字符串(字符匹配) */import com.sun.org.apache.xerces.internal.impl.xpath.regex.Match;public class RegExpressTest {public static void main(String[] args) throws Exception {///////////////// 正则表达式概念///////////////System.out.println("abc".matches("..."));// 一个点代表一个字符// 输出trueprintStr("a2312b".replaceAll("\\d", "-"));// '\d'代表数字, 最前面那个\是转义字符// 输出a---bPattern p = Pattern.compile("[a-z]{3}");// 编译一种模式,速度快一些Matcher m = p.matcher("sun");printStr(m.matches());// 输出true///////////////// . 一个// * 0个或多个// + 一个或多个// ? 0个或一个// []表示范围 &&交集///////////////printStr("aaaa".matches("a*"));printStr("".matches("a*"));printStr("a".matches("a?"));printStr("192".matches("[0-2][0-9][0-9]"));printStr("A".matches("[a-zA-Z]"));printStr("R".matches("[A-Z && [RST]]"));printStr("\\".matches("\\\\"));// \匹配// emailprintStr("dulala@glogoo.com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));// matches find lookingAtPattern p2 = Pattern.compile("\\d{3,5}");String string = "123-34567-901-00";Matcher m2 = p2.matcher(string);printStr(m2.matches());m2.reset();printStr(m2.find());printStr(m2.start() + "-" + m2.end());printStr(m2.find());printStr(m2.start() + "-" + m2.end());printStr(m2.find());printStr(m2.start() + "-" + m2.end());printStr(m2.find());// printStr(m2.start()+"-"+m2.end());Pattern p3 = Pattern.compile("java", Pattern.CASE_INSENSITIVE);// 忽略大小写Matcher m3 = p3.matcher("Java, I love JAVA very javaja.");while (m3.find()) {printStr(m3.group());printStr(m3.start() + "-" + m3.end());}printStr(m3.replaceAll("JAVA"));// group () -- 数左小括号的编号Pattern p4 = Pattern.compile("(\\d{3,5})([a-z]{2})");Matcher m4 = p4.matcher("123aa-23433bb-124ccc-00");while (m4.find()) {printStr(m4.group(1));}////////////////// 抓取邮箱////////////////printStr("//////////////////////");printStr("抓取邮箱");printStr("//////////////////////");BufferedReader br = new BufferedReader(new FileReader("email.html"));String line = "";while ((line = br.readLine()) != null) {parse(line);}br.close();////////////////// qulifiers////////////////printStr("//////////////////////");printStr("qulifiers--Greedy/Reluctant");printStr("//////////////////////");Pattern p5 = Pattern.compile("(.{3,10})([0-9])");// Greedy// quantifiers这是默认的写法String strTemp = "abcd5fghi6df";Matcher m5 = p5.matcher(strTemp);if (m5.find()) {printStr("Greedy quantifiers结果");printStr(m5.start() + "-" + m5.end());// 0-10} else {printStr("Not match");}Pattern p6 = Pattern.compile("(.{3,10}?)([0-9])");// Reluctant// quantifiersm5 = p6.matcher(strTemp);if (m5.find()) {printStr("Reluctant quantifiers结果");printStr(m5.start() + "-" + m5.end());// 0-5} else {printStr("Not match");}// non-capturing groups////////////////// non-capturing groups 用得较少////////////////printStr("//////////////////////");printStr("qulifiers--Greedy/Reluctant");printStr("//////////////////////");Pattern p7=Pattern.compile(".{3}(?=a)");//a往前看3个字符Matcher m7=p7.matcher("234a67bcaa");while(m7.find()){printStr(m7.group());}}public static void printStr(Object o) {System.out.println(o);}// 匹配 邮件private static void parse(String line) {Pattern p = Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");// email正则表达式Matcher m = p.matcher(line);while (m.find()) {System.out.println(m.group());}}}
结果
truea----btruetruetruetruetruetruetruetruetruefalsetrue0-3true4-9true10-13falseJava0-4JAVA13-17java23-27JAVA, I love JAVA very JAVAja.12323433124//////////////////////抓取邮箱//////////////////////hpdrxiaoyu@sina.comfeb_209@163.comyuulee@yahoo.cncjcdjk@126.comxhy.163@163.comjoria0919@yahoo.cnreido@163.comluka19tong@163.com471058178@qq.comlhy_sophia08@cuc.edu.cntiffanylovelife@126.comlychee1842@gmail.comzyqwendy@hotmail.comjinanzx@hotmail.comlittleppkid@gmail.comwinnitong@hotmail.comyuanagao@gmail.comyinyufeiyan@126.com//////////////////////qulifiers--Greedy/Reluctant//////////////////////Greedy quantifiers结果0-10Reluctant quantifiers结果0-5//////////////////////qulifiers--Greedy/Reluctant//////////////////////2347bc
- java_正则表达式
- java_基本正则表达式
- Java_正则表达式
- java_正则表达式
- Java_正则表达式
- java_正则表达式
- java_正则表达式汇总笔记
- JAVA_正则表达式(1)
- JAVA_正则表达式(2)
- 黑马程序员 java_正则表达式笔记
- Java_正则表达式验证用户名长度
- 菜鸟先飞之JAVA_正则表达式
- java_正则表达式pattern类Matcher类_(字符串匹配)
- java_正则表达式pattern类Matcher类_(字符串匹配)
- JAVA_正则表达式关于\(反斜杠)的处理
- JAVA_正则表达式中\(反斜杠)处理
- Java_正则表达式_按给定正则表达式分割或替换字符串
- Java_正则表达式_推荐在复杂字符串操作中使用正则表达式
- lintcode,等价二叉树
- C/C++中extern关键字详解
- 一维、二维正态分布概率密度曲线的绘制
- Gpio模拟i2c总线对24c02进行读写
- IOS开发学习过程问题点记录
- Java_正则表达式
- Linux并发服务器编程之IO多路复用
- 算法总结
- eclipse 关闭控制台 自动弹出
- Sql Server 恢复模式
- 用几十行代码实现python中英文分词
- 详细设计-程序结构图
- ios安卓SDK在ipv4和ipv6下自动匹配当前网络
- 数据挖掘——多科学