Java基础--正则表达式的规则
2019-05-23 09:55:56来源:博客园 阅读 ()
注意:正则表达式只关注格式是否正确,不关注内容是否有效。
一、字符集合, []表示一个字符。
1、[abc] :指a,b,c中的任意一个字符。
2、[^abc]:指除了a,b,c外的任意字符。
3、[a-z]:表示a到z间的任意一个字符。
4、[a-zA-Z0-9]:表示a到z,A到Z,0到9的任意一个字符。
5、[a-z&&[^bc]]:等价于[ad-z],指a到z间除了b,c字符的任意字符。
二、预定义字符集* ( . )表示任意一个字符。
1、\d : 数字字符集,相当于[0-9],
2、\w:单词字符集,相当于[a-zA-Z0-9_]。
3、\s:空白字符集,相当于[\t\n\f\r\xoB]。
4、\D:非\d
5、\W:非\w
6、\S:非\s
三、数量词
1、?表示0个或一个。
2、* 表示0个或无穷个。
3、+ 表示1个或无穷个。
4、{n}表示n个。
5、{n, }表示n个到无穷个。
6、{n, m }表示n个到m个(m>n)。
7、() 表示一个整体。比如:(\+86)就是表示+86,此时+需要转义。
8、^在[]中表示非,而放在[]外,表示以……开头。比如^[0-9]就是以数字0-9开头。
9、$表示以……结尾,比如[0-9]$就是指以数字0-9结尾。
四、java的String中正则表达式写法(转义的问题)
1、11位手机号正则表达式: "^[0-9]{11}$" ;
2、邮箱正则表达式:"^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9])+$" ;此时若使用String regex = " [a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9])+ "; 由于java字符串认为 ( . ) 不需要进行转义,所以写成 ( \. )会报错,需要对 \ 进行转义, 即写成 ( \\. )
3、简单的日期表达式:"^\\d{4}(\\-|\\/|\\.)\\d{1,2}\\1\\d{1,2}$" ; \1表示匹配第一个小括号的内容,即(\-|\/|\.)
1 public class Test { 2 public static void main(String[] args) { 3 String regexDemo1 = "^\\d{4}(\\-|\\/|\\.)\\d{1,2}\\1\\d{1,2}$"; 4 String str = "2019.05.22"; 5 System.out.println(str.matches(regexDemo1)); // 返回true 6 7 // regexDemo1等价于regexDemo2。 其 \1 指的即为第一个小括号(), 即 \1 指的是 (\-|\/|\.) 8 String regexDemo2 = "^\\d{4}(\\-|\\/|\\.)\\d{1,2}(\\-|\\/|\\.)\\d{1,2}$"; 9 System.out.println(str.matches(regexDemo2)); // 返回true 10 } 11 }
五、字符串的替换与分解(使用正则表达式)
1、public boolean matches(String regex);判断当前字符串对象是否与参数regex格式相匹配。
2、public String replaceAll(String regex, String replacement);将字符串中符合regex格式的子串替换成replacement,此时并未改变原始字符串。
3、public String[] split(String regex); 将字符串使用regex标记分割,并将分割后的单词存入字符串数组中。
1 public class Test { 2 public static void main(String[] args) { 3 String regex = "[0-9]+"; 4 String str = "hello123world123"; 5 System.out.println("原始字符串为: " + str);//输出hello123world123 6 7 System.out.println("替换字符串后为: " +str.replaceAll(regex, " welcome ")); //输出hello welcome world welcome 8 System.out.println("原字符串不变:" + str); //不会改变原来的字符串,输出为hello123world123 9 10 System.out.println("输出切割后的字符串: "); 11 String digitWord[] = str.split(regex); // 以regex格式分割 12 for (String s : digitWord) { 13 System.out.println(s); 14 } 15 } 16 } 17 /* 18 测试结果为: 19 原始字符串为: hello123world123 20 替换字符串后为: hello welcome world welcome 21 原字符串不变:hello123world123 22 输出切割后的字符串: 23 hello 24 world 25 */
原文链接:https://www.cnblogs.com/l-y-h/p/10907646.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
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