栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

正则表达式学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

正则表达式学习笔记

正则表达式
  • 1⃣️匹配以020-加上8位数字的字符串,如果字符串以020-开头,后面是8位数字,则匹配成功
  • 2⃣️java的split的要注意的一个问题
  • 3⃣️把出现英语的地方全部换成“钱”
  • 4⃣️成组匹配,必须一组一组的匹配
  • 5⃣️⚠️⚠️⚠️匹配规则⚠️⚠️⚠️
  • 6⃣️Pattern和Matcher的用法
  • 7⃣️group分组

1⃣️匹配以020-加上8位数字的字符串,如果字符串以020-开头,后面是8位数字,则匹配成功
public static void main(String[] args) {
        String pattern = "020-\d{8}";
        System.out.println("请输入一个广州的电话号码");
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()){
            String line = sc.nextLine();
            if (line.matches(pattern)){
                System.out.println("请火速汇款30万元以立即购买,否则失去发财机会!!");
                System.out.println("请再次输入");
            }else {
                System.out.println("输入的电话号码无效");
                System.out.println("请再次输入");
            }
        }
    }
2⃣️java的split的要注意的一个问题
public static void main(String[] args) {
        String p = "\.";
        String str = "fkit.org";
        String[] res1 = str.split(p);//以.作为分隔符
        String[] res2 = str.split(".");//以任意字符作为分隔符,正则表达式中,"."匹配任何字符
        System.out.println(res2.length==0);// true,因为是以任意字符为分隔符,所以根本分解不了!!
        System.out.println("以.作为分隔符");
        for(var i:res1){
            System.out.println(i);
        }
        System.out.println("以任意字符作为分隔符,因此res2是null,正则表达式中,"."匹配任何字符");
        for (var i:res2){
            System.out.println(i);
        }
    }

Java对正则表达式的支持
String 类:
matches(regex):判断该字符串是否匹配正则表达式
split(regex):根据指定分隔符将字符串分割成多段
replaceAll(regex,replacement):将regex匹配的内容替换replacement

3⃣️把出现英语的地方全部换成“钱”
public static void main(String[] args) {
        String s = "我爱Java,我爱凤姐,我爱编程";
        String r = s.replaceAll("[a-zA-Z]+", "钱");
        System.out.println(r);
    }
4⃣️成组匹配,必须一组一组的匹配
public static void main(String[] args) {
        System.out.println("abc".matches("(abc){1,2}"));
        System.out.println("abcc".matches("(abc){1,2}"));
        System.out.println("abcabc".matches("(abc){1,2}"));
    }
5⃣️⚠️⚠️⚠️匹配规则⚠️⚠️⚠️

{m,n} 前面的字符出现m~n次
{m,}前面的字符出现m~∞次
{,n}前面的字符出现0~n次
{n}前面的字符出现n次
^开头
$结尾

. 代表任意一个字符
d 代表任意一个数字 digit
D 代表任意一个非数字
w 代表任意一个单词
W 代表任意一个非单词
s 代表任意一个空白
S 代表任意一个非空白
[a-d] 范围:代表a、b、c、d任一字符
[adm] 枚举,代表a、d、m其中任一字符
[am4-6] 混合:代表a、m、4、5、6任一字符
[^a-d] 求否,代表不是a、b、c、d其中任一字符
[a-g&&[^c-e]]:求与,表示a、b、f、g其中任一一个字符

? :前面的字符可以出现0~1次
例如:a?b 可以代表b,ab

*:前面的字符出现0~N次
例如
1⃣️ a*b可以代表b,ab,aaab,aaaab
2⃣️ d * 5可以代表5,345,345345
3⃣️[0-1]*5可以代表5,00005,01101015
+:前面的字符出现1~N次
a+b:可以代表ab,aaab,aaaaaaaab
d+5可以代表345,345345
[0-1]+5可以代表000005,01101015

成组:
(abc){1,2}可以代表:abc,abcabc
((abc)|(123))* : 可以代表"" , abc123
((abc) * | (123)*):可以代表"" , abcabc , 123123

6⃣️Pattern和Matcher的用法

用于实现从文本中提取有效的信息,比如手机号码,提取之后随意使用

Pattern就代表了正则表达式

String s = "1(([35][0-9])|(47)|(9[0-35-9]))\d{8}";//电话号码
Pattern p = Pattern.compile(s);//编译一个正则表达式
Matcher m = p.matcher(line);//假设line是一个io流中一行一行读取的String的java对象
// Matcher的创建对象这一行就代表了从line中提取出p正则表达式匹配的字符串!!!
7⃣️group分组

传送门:该笔记参考的页面

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356783.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号