JAVA学习笔记之正则表达式
来源:互联网 发布:支付宝淘宝霸王条款 编辑:程序博客网 时间:2024/05/21 01:32
正则表达式(regular expression)描述的是一种字符串匹配的模式,使字符串更易于操作。但其弊端就是使代码的阅读性降低。
专门用于对字符串的操作包括:
1、匹配
String类中提供了匹配的方法matches()
boolean matches(String regex) —->告知此字符串是否匹配给定的正则表达式。
2、切割
String类中提供了切割的方法
String[] split(String regex) —->根据匹配给定的正则表达式来拆分此字符串。
例如:
public class RegexDemo { public static void main(String[] args) { String str="123 48 489 330"; String[] s = str.split(" +");//规则:以空格符为分隔符,输出分隔符之间的内容,X+指的是一次或多次出现的符号 for(String sps:s){ System.out.println(sps); } } }
输出
123
48
489
330
3、替换
String replaceAll(String regex, String replacement) —->使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
例如:需求是将输入的手机号中间四位输出为*
public class RegexDemo { public static void main(String[] args) { String temp="15100004567"; String str=temp.replaceAll("(\\d{3})(\\d{4})(\\d{4})","$1****$3" ); //1、(A)将括号内内容作为一个组,后面直接引用。 //2、X{n}+表示X出现恰好 n 次。 //3、如果有两个字符串,后面的字符串取前一个字符串的组时,要用$符号,$1表示取第一个组,也就是前三个数字,$3表示取第三个组,也就是最后四个数字 System.out.println(str); } }
输出为151****4567。
练习:需要将输入的字符串中两个以上出现的字符替换为空白符
public class RegexDemo { public static void main(String[] args) { String temp1="ad$$ddugj7777do8dk%%%dfg"; String str1=temp1.replaceAll("(.)\\1+"," " );//(.)意思就是将出现的任意字符封装成一个组,\\1+的意思是前面出现的组要出现1次以上。综上,匹配出来的就是一个多次出现的字符组合 System.out.println(str1); } }
输出:ad ugj do8dk dfg
4、获取
实现获取:将符合规则的内容取出来
用到正则表达式对象(java.util.regex)
1、将字符串规则封装成Pattern对象。compile(regex)方法
2、通过正则对象获取匹配器对象,用到将正则规则作用到要操作的字符串上
3、通过匹配器对象的方法,对字符串进行操作
示例:
Pattern p = Pattern.compile("a*b");//将规则编译成对象 Matcher m = p.matcher("aaaaab");//和要操作的字符串关联,生成匹配器对象 boolean b = m.matches();//使用匹配对象方法对字符串操作
练习:需求是取出字符串中由三个字母组成的单词“abc hd haha zsy shi hdu le hyssd”
import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexGet { public static void main(String[] args) { String temp = "abc hd haha zsy shi hdu le hyssd"; String regex="\\b[a-zA-Z]{3}\\b";//\b是指单词的边界,该规则的意思是寻找单词字母个数为3的 ;如果只是单纯得将规则定为[a-zA-Z]{3},输出就会出现错误,例如出现hah这样的结果。 Pattern p = Pattern.compile(regex); Matcher m = p.matcher(temp); while(m.find()){ //find()方法是判断有无匹配到的字符串,返回值为boollean,该循环与迭代器类似 String g = m.group();//group()方法是抓取匹配到的字符串 System.out.println(g); } }}
输出为
abc
zsy
shi
hdu
0 0
- JAVA学习笔记之正则表达式
- JAVA学习笔记之正则表达式练习题
- 学习笔记之正则表达式
- java学习之路---正则表达式---学习笔记
- Java学习笔记----正则表达式
- Java学习笔记-正则表达式
- java学习笔记---正则表达式
- java 正则表达式-学习笔记
- JAVA学习笔记-正则表达式
- Java正则表达式学习笔记
- java正则表达式学习笔记
- java正则表达式学习笔记
- Java 正则表达式学习笔记
- [学习笔记]Java正则表达式
- JAVA正则表达式---学习笔记
- Java正则表达式学习笔记
- [学习笔记]Java正则表达式
- JAVA学习笔记-----正则表达式
- 【STL】list的应用模拟实现
- c语言指针总结(详细)
- Ajax总结
- 第六章-无线传感网定位技术
- Leetcode 150 Evaluate Reverse Polish Notation
- JAVA学习笔记之正则表达式
- leetcode--remove_element
- 关于浏览器内核你不得不了解的事
- 多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合
- 天气预报软件设计
- jQuery插件Validate实现自定义校验结果样式
- 《0Day安全》之堆溢出
- Connection-通过MysqlDriver建立与mysql数据库的连接
- 467. Unique Substrings in Wraparound String**