Java25岁了!还不会正则表达式?

【自取】最近整理的,有需要可以领取学习:

都2020年了,Java的正则还不会用,是不是太对不起Java 的25岁生日了!来,多少学点简单的。

Java25岁了!还不会正则表达式?
正则表达式由俩种基本字符类型组成:原义(正常)文本字符和元字符。 含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的 元字符

; 一、正则表达式元字符一览

元字符正则表达式中的写法意义..代表任意一个字符\d\d代表0-9的任何一个数字\D\D代表任何一个非数字字符\s\s代表空白字符,如’\t’、’\n’\S\S代表非空白字符\w\w代表可用作标识符的字符(a,A,1,2,_等),但不包括”$”\W\W代表不可用于标识符的字符\p{Lower}\p{Lower}代表小写字母a-z\p{Upper}\p{Upper}代表大写字母A-Z\p{ASCII}\p{ASCII}ASCII字符\p{Alpha}\p{Alpha}字母字符\p{Digit}\p{Digit}十进制数字,即0-9\p{Alnum}\p{Alnum}数字或字母字符\p{Punct}\p{Punct}标点符号\p{Graph}\p{Graph}可见字符:[\p{Alnum}\p{Punct}]\p{Print}\p{Print}可打印字符:[\p{Graph}\x20]\p{Blank}\p{Blank}空格或制表符:[\t]\p{Cntrl}\p{Cntrl}控制字符:[\x00-\x1F\x7F]

注:在正则表达式中”.”代表任何一个字符,因此在正则表达式中如果想使用普通意义的点字符”.”,必须使用转义字符”/”。还有就是元字符只能代表一个字符,如下:

//测试
public class Regex {
    public static void main(String[] args) {
        String test = "ab";
        //matches方法为String正则表达式判断的方法
        //该字符串符合正则表达式则返回true
        System.out.println(test.matches("\\p{Lower}b"));
        //打印结果为true
    }
}

二、自定义元字符

上表为Java已经给我们定义好的元字符,当然我们也可以自己去定义元字符。正则表达式中自定义元字符的规则: 使用方括号括起若干个字符来表示一个元字符。
示例:

自定义元字符意义[^456]代表4、5、6之外的任何一个字符[a-r]代表a-r中的任何一个字符[a-zA-Z]可表示任意一个英文字母[a-e[g-z]]代表a-e,或者g-z中的任何一个字母( 并运算

)[a-o&&[def]]代表字母d、e、f( 交运算

)[a-d&&[^bc]]代表字母a、d( 差运算

如果发生了什么事,你不亲力亲为,还想学吗?我想我要学着变得一无是处。[en]If something happens, do you want to learn it if you don’t do it yourself? I think I want to learn to be useless.

Java25岁了!还不会正则表达式?

; 三、限定修饰符

到目前为止,我们发现自定义元字符和原始元字符都只能表示一个字符。我不能按照常规判断在邮箱里写一打元字符。[en]So far we have found that both custom and original metacharacters can only represent one character. I can’t go to regular judgment to write a dozen metacharacters in a mailbox.

Java25岁了!还不会正则表达式?
在正则表达式中允许使用限定修饰符来限定元字符出现的次数。例如: “a?”表示a字符可在字符串中出现0次或一次。

限定修饰语的含义示例?0次或1次A?*0次或更多次A+{n}恰好出现n次A{2}{n,}至少n次A{3,}{n焦点m}次A{2}6}[en]Example of the meaning of qualifying modifiers? 0 times or 1 time A? * 0 or more times A + {n} happens to occur n times A {2} {n,} at least n times A {3,} {nfocus m} times A {2} 6}

以下是需要注意的几点摘要:[en]Here is a summary of the points that need to be noted:

1)使用限定修饰符出现n次必须是连续出现。

"aba".matches("a*b");//false
"aab".matches("a*b");//true

2)每一个文本字符或者元字符只能代表一个字符(限定符除外)。

"aab".matches("a*");//false
"aab".matches("a*b");//true

讲的比较简单了,开始符,结束符,pattern类等都是没有提到的,如果使用频繁或者深入学习可以自己去百度深入一下,简单匹配这些是够用的啦,告辞!

Original: https://blog.csdn.net/weixin_45056780/article/details/106360782
Author: 世代农民
Title: Java25岁了!还不会正则表达式?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/6105/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部