




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java 正则表达式快速入门儿到精通Javajdk提供大量的正则表达式工具,使您能够高效地创建、比较和修改字符串,以及迅速地分析大量文本和数据以搜索、移除和替换文本下面是我学习时候的一些例子;每一个我都给出了注释;下面的代码可以直接执行;具体的细节可参照API文档和实际应用来进行详细学习和提高;package xinxi.software.shinnexi.regexp;import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegTest public static void main(String
2、 args) String str = "asdfaadfgx"p(str.matches(".");p(str.replaceAll("d", "-");Pattern pattern = Ppile("a-z3");/ 提前编译该正则表达式;返回该正则表达式的Pattern模式;Matcher matcher = pattern.matcher(str);/ 匹配的过程会产生多种结果,均保存在matcher中;p(matcher.matches();/ 返回是否与正则表达式匹配;p(str.
3、matches("a-z10");/ . * + ?System.out.println("hahhahahfadfadfadsfasdfadsf");p("a".matches(".");/ '.' Instead of a character;p("aa".matches("aa");/ matches 'a''a'p("aaaa".matches("a*");/p("aaa
4、a".matches("a+");/ '+' one or more times ;p("".matches("a*");/ '*' zero or more times;p("aaaa".matches("a?");/ '?'exists once or zero times;p("".matches("a?");/ zero lines matches;p("a".match
5、es("a?");/p("46546464645460".matches("d3,100");/ matches at least three/ times but not more than/ 100 times;p("23".matches("d1,3.d1,3.d1,3.d1,3");/p("152".matches("0-20-90-9");/ ip ;/ /2 / 8/ Range ;p("a".matc
6、hes("abc");/ 取abc三者之一的;p("a".matches("abc");/ 取abc之外的其他字符;p("A".matches("a-zA-Z");/ 取a到z或者A-Z之间的一个字符;p("A".matches("a-z|A-Z");/ 同上;p("B".matches("a-zA-Z");/ 同上;p("R".matches("A-Z&&RFG&quo
7、t;);/ 取A-Z之间的并且是RFG之一的一个字符;/ / Specify character matches;p(" nrt".matches("s4");/ 空白字符;p(" ".matches("S");/ 非空白字符;p("a_8".matches("w3");/ matchesw= a-zA-Z_0-9;p("abc888*&%".matches("a-z1,3d+*!#$%&*+");p("&qu
8、ot;.matches("");/ / POSIX pattern in Unix;p("".matches("pLower");/ etc.;/ /p("hello sir".matches("h.*");p("hello sir".matches(".*ir$");p("hello sir".matches("ha-z1,3.*ob.*");/ "b" instead of/ boundary
9、 of word is/ include specify/ character;p("hellosir".matches("ha-z1,3.*ob.*");/ / verify white line ;p(" n".matches("s&&n*n$");p("aaa8888c".matches(".*d4.");p("aaa 8888c".matches(".*bd4.");p("aaa 8888c"
10、.matches(".*d4.");p("aaa8888c".matches(".*bd4.");/ result is false the clause is/ that have no word boundary is string ;/ / e-mail regular expression ;p("adsfa".matches("w.-+w.-+.w+");/ "."is/ instead/ of '.'/ / Qualifier/Pattern p
11、= Ppile("(.3,10?)0-9");/在默认情况下使用的是greed模式;每次就吞进最长的数量;如果不行就吐出一个字符进行匹配;/使用了X? Reluctant模式称为懒惰模式,每次尽量以最小的字符数量吞进;来进行与pattern进行匹配;Pattern p =Ppile("(.3,10+)0-9");/使用possessive 模式的.首先吞进最大的 数量,然后直接往后边进行匹配;/没有找到就返回没有找到;而不会往后退;String strs = "fghj5vbnm4"Matcher m = p.matcher(strs
12、);while (m.find() p(m.group();p(m.start()+"-"+ m.end();Pattern p2 =Ppile("(.3)(?=a)");/向前不是a的;如果放到前边则表示是a的字符;/back reference ; Pattern p3 =Pattern .compile("dd1");/后边的这个1代表的是后边匹配的字符串必须和第一个组取到的字符串一样才行;/* * this method is convenience to print object ; */public static void
13、 p(Object o) System.out.println(o);从这里开始是第二个实验类,主要目的是学习Matches中的find(),和lookingat();package xinxi.software.shinnexi.regexp;import java.util.regex.*;public class Matches_find_lookingAt public static void main(String args) Pattern p = Ppile("d3,5");String str = "123-4567-12345-345678&qu
14、ot;Matcher m = p.matcher(str);p(m.matches();/ 返回是否匹配;指针留在了第一个不符合的位置;m.reset();/ 重新设定正则表达式的匹配引擎的指针;回到开始点;m.find();/ 从头开始逐个查找匹配的子字符串;并且定为到第一个查到以后的位置;/ 如果不调用reset();则在后续的find()中会从matches方法的不匹配的地方开始往后边find;p(m.start() + "-" + m.end();/ 从查找到的开始位置startlocation 和endlocation ;/ 前提是保证能够找到子串;m.find(
15、);/ 从第一个查找到的位置开始,往后查找;p(m.start() + "-" + m.end();m.find();/ and so on ;p(m.start() + "-" + m.end();m.find();/ and so on ;p(m.start() + "-" + m.end();p(m.lookingAt();/ 從頭開始查找;每次都從開始的位置查找;p(m.lookingAt();/ 每次都從開始的位置開始查找不記錄匹配引擎的指針位置;p(m.lookingAt();/ and so on;/ / replace
16、ment;Pattern pattern = Ppile("java", Pattern.CASE_INSENSITIVE);/ 对大小写不敏感;/flags 简写;/str.matches("(?i)java");/该种写法相当于CASE_INSENSITIVE简写形式;String str2 = "java Java JJava JAVa IloveJava Ilove you jaVa afdsfadsfad"Matcher matches = pattern.matcher(str2);/* * while(matches.f
17、ind() p(matches.group();/ 如果匹配就返回匹配的字符串组 ; * 其中"java"就是字符串组0; */StringBuffer buf = new StringBuffer();int i = 0;while (matches.find() i+;if (i % 2 = 0) matches.appendReplacement(buf, "java");/ 用后边的字符串替换源字符串中的匹配位置;然后添加到stringbuffer中; else matches.appendReplacement(buf, "JAVA");matches.appendTail(buf);/ append tail to the specify stringbuffer;p(buf);/ print;/ / group;Pattern patternTest = Ppile("(d3,5)(a-z2)");String strGroup = "4656as-345ree-21345nj-df"Matcher matcherTest = patternTest.matcher(strGroup);while
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2017课题申报书范文
- 气象课题申报书范例范文
- 动物医学课题申报书
- 员工超额激励奖金合同范本
- 交通课题申报书怎么写
- 产品预订合同范本
- 双师课堂课题申报书
- 护理专业劳动课题申报书
- 课题查申报书查重吗
- 低价出售砖机合同范本
- 人教版一年级数学下册全册教案(表格式)
- 信息系统项目验收方案
- 2024年新北师大版七年级上册数学 问题解决策略:直观分析 教学课件
- 4.2基因表达与性状的关系2表观遗传高一下学期生物人教版必修2
- 10以内连加减口算练习题完整版205
- 老年失能全周期综合康复管理模式专家共识
- 第九单元 文人情致 课件高一音乐人音版(2019)必修 音乐鉴赏
- 11BS4排水工程华北标图集
- 四年级上册道德与法治学科质量分析报告
- 湖北省武汉市汉阳区2023-2024学年七年级下学期期末数学试题
- 混合痔疾病查房课件
评论
0/150
提交评论