025.1 正则表达式 常用功能
2018-09-18 06:38:43来源:博客园 阅读 ()
内容:正则表达式是什么?为什么会有正则表达式?正则表达式常用功能
#####################正则表达式是什么?
正则表达式是用于匹配想要的规则的字符串,如:
var str = "abc123def"; var patt1 = /[0-9]+/; document.write(str.match(patt1));
patt1 就是一个 正则表达式,这里是匹配数字,要匹配其他,当然要学规则
#####################为什么会有正则表达式?
有匹配字符串的需求,比如上面例子,如果数字更长,我们又要取出,用代码编写就会比较复杂,如果使用正则,每次都是使用这个方法,熟悉后,编写迅速,太多就不写了,啰嗦
###############################################################################常用功能
###############规则
java 中要重复出现
###################Java正则常用功能
//####切割
private static void splitDemo() { String temp = "awelafew##aewwoeif$$$$fewaigaxxxxoaigjwkqqqqqq"; String regex = "(.)\\1+"; //重复数量大于1 String[] names = temp.split(regex); for(String name:names){ System.out.println(name); } }
与正则匹配的字符为:
##
ww
$$$$
xxxx
qqqqqq
调用结果:输出
awelafew
ae
oeif
fewaiga
oaigjwk
这里通过下面这个例子理解重复问题。
([0-9])\1{5} 或 ([\d])\1{5} 连续相同的6位数字 如:333333
([0-9a-zA-Z])\1{5} 连续相同的6位数字或字母 如:222222 cccccc ZZZZZZ
([\d])\1{2}([a-z])\2{2} 连续相同3位数字后根连续相同的三位小写字母 如:222www
([\d])\1{2}([a-z])\2{2}|([a-z])\3{2}([\d])\4{2} 同上,但是能匹配数字+字母或字母+数字 如:222www 或 www222
这么多的例子自己可以扩展,要注意的就是 \1 \2代表位置,从左到右递增
所以上面的正则是可以改成(.)\\1{1,}
//####替换
{ String num = "15722226666"; num = num.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); //在方法多参数时,后面的参数可以通过 $编号 的形式取到前一个参数的组 System.out.println(num); }
调用结果:输出
157****6666
//####获取
实现获取:将符合规则的内容提取出来
用正则表达式对象。java.util.regex.Pattern
1.将字符串规则封装成Pattern对象。Pattern.compile(regex)
2.通过正则对象获取匹配器对象。用对将正则规则作用到要操作的字符串上
3.通过匹配器对象的方法,对字符串进行操作
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
Matcher类
? matches 方法尝试将整个输入序列与该模式匹配。
? lookingAt 尝试将输入序列从头开始与该模式匹配。
? find 方法扫描输入序列以查找与该模式匹配的下一个子序列。
String
group() 返回由以前匹配操作所匹配的输入子序列。
单词边界:\\b
步骤:
1、获取Pattern类
2、Pattern类和Matcher关联
3、匹配
4、获取
private static void getDemo() { String source = "aix awefawe wega aiq wea fwa gal aweflia"; String regex = "\\b[a-zA-Z]{3}"; // 开头以字母开始,选取前面三个 Pattern p = Pattern.compile(regex); Matcher m = p.matcher(source); while(m.find()){ System.out.println(m.group()); } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:JVM系列之三:类型的生命周期
下一篇:IPFS搭建&集群
- 学习笔记之Lambda表达式 2020-06-05
- JAVA8 Lambda表达式 2020-05-31
- Lambda表达式用法大比较: Scala和Java 8 2020-05-26
- java 8 stream、lambda表达式对list操作分组、过滤、求和、 2020-05-14
- JavaWeb 之 EL与JSTL 2020-05-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash