正则表达式
来源:互联网 发布:qq三国淘宝游戏币 编辑:程序博客网 时间:2024/06/05 07:32
正则表达式
正则表达式:符合一定规则的表达式。
作用:专门操作字符串
特点:用于一些特定的符号来表示一些代码的操作。这样就简化书写。
好处:可以简化对字符串的复杂操作。
弊端:符号定义越多,正则越长,阅读新越差。
String类
1、匹配:boolean matches(regex)用规则匹配整个字符串,只要有一处不符合规则,就结束返回false。
2、切割:String[] split(regex);
//按照叠词完成切割。为了可以让规则的结果被重用//可以将规则封装成一个组。用()完成。组的出现都有编号。//从1开始。 想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取。String str1 = "erkktyqqquizzzzzo";String reg = "(.)\\1+";String[] arr = str1.split(reg); System.out.println(arr.length);for(String s : arr){System.out.println(s);}
3、替换:String[] replaceAll(regex,str):str为要替换为的字符串
String str = "我我...我我...我要..要要...要要...学学学....学学...编编编...编程..程.程程...程...程";str = str.replaceAll("\\.","");System.out.println(str);str = str.replaceAll("(.)\\1+","$1");System.out.println(str);
当要应用的组不再同一个字符串内,想要用前一个字符串的组用$n(n为编号)。
将重叠的字符替换为单个字符,将叠词替换掉用$
4、获取:将字符串中的符合规则的子串取出。
步骤:
1)、将正则表达式封装成Pattern对象。Pattern p = Pattren。compile(regex);
2)、让正则对象和要操作的字符串相关联。p.matcher(String);
3)、关联后获取正则匹配引擎(匹配对象)。Matcher m = p.matcher(String);
其实String类中的matches方法用的就是Pattern和Matcher对象来完成。
只不过被String的方法封装后,用起来较为简单,但是功能单一。
boolen find():匹配查找,返回找到true还是找不到false,同时记录指针,用于下次find
String group():取出上一步find()所找到的结果。
必须用find()再group()才能获取。
通过迭代就可以把匹配到的所有结果取出。
匹配器Matcher中的指针是公用的,当用matches匹配后,指针就会产生变化,当再用find查找时,就是从匹配后的位置开始查找
{BufferedReader bufr = new BufferedReader(new FileReader("mail.txt"));String line = null;String mailreg = "\\w+@\\w+(\\.\\w+)+";Pattern p = Pattern.compile(mailreg);while((line=bufr.readLine())!=null){Matcher m = p.matcher(line);while(m.find()){System.out.println(m.group());}}}注意:在正则当中反斜杠“\”都是成对出现的。因为单个反斜杠“\”是代表转译,必须要转译回来。
到底用四种功能中的哪一个呢?或者哪几个呢?
思路:
1、如果只想知道该字符是否对错,使用匹配。
2、想要将已有的字符串变成另一个字符串,用替换
3、想要安装指定的方式将字符串变成多个字符串,用切割,获取规则以外的子串。
4、想要拿到符合需要的字符串子串,获取。获取符合规则的子串。
网路爬虫
通过网络以及IO读取网页的源文件,并通过规则获取网页中的符合规则的数据
{URL url = new URL("http://dzh.mop.com/whbm/20060907/0/7z5S8I707f188a73.shtml");url.openConnection();BufferedReader buf = new BufferedReader(new InputStreamReader(url.openStream()));String line = null;String reg = "\\w+@\\w+(\\.\\w+){1,3}";Pattern p = Pattern.compile(reg);while((line = buf.readLine())!=null){Matcher m = p.matcher(line);while(m.find()){System.out.println(m.group());}}}
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- github Linux下使用方法
- 线程的同步(四)---信号量
- ubuntu12.04 无法改变 thinkpad屏幕亮度
- C++ 私有成员变量的理解
- 转WebClient“远程服务器返回错误: (403) 已禁止”错误处理,值得学习
- 正则表达式
- 08-网站访问计数器(jsp内置对象)
- VMware vSphere服务器虚拟化实验八 vSphere vMotion
- window 程序设计 窗口
- C++程序显示二进制文件“内容”
- 关于线程池
- 用于同步的等待函数
- 网络编程 Datagram与Socket两种方式编程实例说明
- 集合的简单理解总结