ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java基础--正则表达式的规则

2021-02-04 19:05:06  阅读:201  来源: 互联网

标签:regex 字符 Java String -- zA 正则表达式 字符串 Z0


阅读目录

 


注意:正则表达式只关注格式是否正确,不关注内容是否有效。

回到顶部

一、字符集合, []表示一个字符。

  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 */
复制代码

 

标签:regex,字符,Java,String,--,zA,正则表达式,字符串,Z0
来源: https://www.cnblogs.com/huoyz/p/14374369.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有