黑马程序员--正则表达式笔记
来源:互联网 发布:搜狐视频下载软件 编辑:程序博客网 时间:2024/06/06 17:14
----------------------android培训、java培训、期待与您交流! ----------------------
正则表达式基础知识
定义:符合一定规则的表达式
作用:由于专门操作字符串。
特点:用于一些特定的符号来表示一次代码,这样做简化书写。
好处:可以简化对字符串的复杂操作。
弊端:符号定义越多,正则越长,阅读性越差。
所以说学习正则表达式,就是学习一些特殊符号的使用。具体操作功能
1.匹配:String matches方法
2.切割:String split方法
3.替换:String replaseAll方法
在替换过程中在组的外面可以$来用前面的组,比如replaceAllDemo(str,"(.)\\1+","$1"); 后面的$1就是引用的前面的组中的内容解释 replaceAllDemo(String str,String reg,String newStr)
{//去字符串中连续重复的字符替换为一个该字符。
str= str.replaceAll(reg,newStr);
}
注意
"."->"\\."叠词-->"(.)\\1+" 用括号括()起来则将封装成一个组。组的出现都是有编号的,编号从1开始
想要使用组可以通过\n (n就是组的编号)的形式来获取。
怎么区分几个组?从左向右从1开始数左括号,是几则这个组的编号就是几.
在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C)))
2 \A
3 (B(C))
4 (C)
组零始终代表整个表达式。
4.获取:将字符串中符合规则的子串取出
操做步骤1.将正则表达式封装成对象
2.让正则对象和要操作的字符串相关联。
3关联后,获取正则匹配引擎。
4.通过引擎对符合规则的子串进行操作,比如取出。
例子
import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexDemo {/**获取:将字符串中符合规则的子串取出 * 操做步骤 *1.将正则表达式封装成对象 *2.让正则对象和要操作的字符串相关联。 *3关联后,获取正则匹配引擎(匹配器)。 *4.通过引擎对符合规则的子串进行操作,比如取出。 * @param args */public static void main(String[] args) {getDemo();}public static void getDemo(){String str= "ming tian jiu yao fang jia le. ";String reg= "\\b[a-z]{3}";// \\b是单词边界匹配//将规则封装为对象;Pattern p = Pattern.compile(reg);//让正则对象和要操作的字符串相关联。获取匹配器。Matcher m = p.matcher(str);System.out.println(m.matches());//其实String类matchers用的就是Pattern和Matcher对象来完成的//只不过被String的方法封装后,用起来较简单,但是功能却单一。//Boolean b = m.find();//将规则作用到字符串上,并进行符合规则的子串查找。//System.out.println(b);//System.out.println(m.group());//用于获取匹配后的结果。while (m.find()){System.out.println(m.group());}}}
这四种功能如何选择呢?
思路方式1.如果只想知道该字符是否是对是错。使用匹配
2.想要将已有的字符串变成另一个字符串,替换
3.想要按照自定的方式将字符串变成多个字符串,切割。获取规则以外的子串。
4.想要拿到符合需求的字符串子串,获取。获取符合规则的子串
练习
将ip地址进行地址段顺序排序
192.68.1.254 102.49.23.13 10.10.10.10 2.2.2.2 8.109.90.30思路
还按照字符串自然顺序,只要将它们的每一段都是三位即可。
1.按照每一段粗腰的最多的0补齐,那么每一段就会至少保证有三位。
2.将每一位只保留三位。这样,所有的ip地址都是每段三位。
import java.util.TreeSet;public class IPSortDemo {/**将ip地址进行地址段顺序排序 192.68.1.254 102.49.23.13 10.10.10.10 2.2.2.2 8.109.90.30思路还按照字符串自然顺序,只要将它们的每一段都是三位即可。1.按照每一段粗腰的最多的0补齐,那么每一段就会至少保证有三位。2.将每一位只保留三位。这样,所有的ip地址都是每段三位。 * @param args */public static void main(String[] args) {// TODO Auto-generated method stubipsort();}public static void ipsort(){String ip ="192.68.1.254 102.49.23.13 10.10.10.10 2.2.2.2 8.109.90.30";String rex ="\\d+";ip= ip.replaceAll("(\\d+)", "00$1");System.out.println("ip::"+ip);//ip::00192.0068.001.00254 00102.0049.0023.0013 0010.0010.0010.0010 002.002.002.002 008.00109.0090.0030ip=ip.replaceAll("0*(\\d{3})", "$1");System.out.println("ip1::"+ip);String [] arr = ip.split(" +");TreeSet<String> ts =new TreeSet<String>();for(String s: arr){//去零s=s.replaceAll("0*(\\d+)", "$1");System.out.println(s);}}}
-----------------------------------------------------
从文件获取邮件地址代码
import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.regex.Matcher;import java.util.regex.Pattern;public class getMailTest {/**网页爬虫 * 获取指定文档的邮箱地址 * 使用正则表达式的获取功能 。Pattern Matcher * @param args * @throws Exception */public static void main(String[] args) throws Exception {getMail();}public static void getMail() throws Exception{BufferedReader bufr = new BufferedReader(new FileReader("c:\\abc.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());}}}
----------------------android培训、java培训、期待与您交流! ----------------------
- 黑马程序员--正则表达式笔记
- 黑马程序员:正则表达式学习笔记
- 黑马程序员 java学习笔记--正则表达式
- 黑马程序员 正则表达式笔记总结
- 黑马程序员—正则表达式学习笔记
- "黑马程序员"学习笔记之正则表达式
- 黑马程序员 java_正则表达式笔记
- 黑马程序员-正则表达式学习笔记
- 黑马程序员--正则表达式学习笔记
- 黑马程序员-java学习笔记-正则表达式
- “黑马程序员”正则表达式+html+css笔记
- 【黑马程序员】 学习笔记 - Java正则表达式
- 黑马程序员_正则表达式学习笔记
- 黑马程序员_ 正则表达式(笔记)
- 黑马程序员_Java正则表达式学习笔记
- 黑马程序员---正则表达式学习笔记
- 黑马程序员--学习笔记--正则表达式
- 黑马程序员--java笔记14--正则表达式
- 下拉框中的内容显示不全
- 记录一下心得吧
- 关于JBPM4.4无法删除历史数据的问题
- 这里,我正式来了
- android的文件系统结构简单介绍
- 黑马程序员--正则表达式笔记
- Nehe教程第一课OpenGL窗口
- 自定义Unity对象生命周期管理集成ADO.NET Entity Framework
- dom节点
- 推荐功能的两种算法
- [Fedora]: Install Firefox 10 on Fedora 14
- C++中的声明、定义、赋值和初始化
- 黑马程序员--集合框架笔记(一)
- ASP.NET之基础概念——HttpHandler