Java正则表达式必知必会

元字符作用例程
\1. 特殊的通配符
        比如:\d 表示匹配数字
2. 表示元字符要从字面上解释:
        比如:匹配 . 的时候,正则表达式 \\.

1.匹配数字:

String s = "java.1234567"; String r = "\\d+"; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){System.out.println(m.group()); }

输出:1234567

 

2.匹配小数点(.):

String s = "java.1234567"; String r = "\\."; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group()); }
输出:.
^

1. 匹配输入的开始;如果有多行,同样匹配换行符后

        例如:只匹配4位数字 ^\\d{4}$

2. 当在设置模式中,表示匹配任何但是不包括括号内

        比如: [^abc] 表示匹配的内容不包括a,b,c

1.从开头开始匹配:

String s = "1234567java1234"; String r = "^\\d+"; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group()); }

输出:1234567

 

2.不加^:

String s = "1234567java1234"; String r = "\\d+"; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group()); }

输出:1234567

           1234

 

3.不匹配某项内容:

String s = "1234567java1234"; String r = "[^1&&\\d]+"; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group()); }

输出:234567

           234

 

$匹配输入的结束

1.

String s = "1234567java"; String r = "^(\\d+)$"; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group()); }

输出:无

 

2.

String s = "1234567"; String r = "^(\\d+)$"; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group()); }
输出:1234567
.匹配换行符之外的任何单个字符
String s = "java24"; String r = "."; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group()); }

输出:j

          a

          v

          a

          2

          4

*

+

匹配前面的字符0次或者更多次数

匹配前面的字符1次或者更多次数

1.

String s = "java24"; String r = "\\d*"; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group()); }

输出:

        

       

         

           24        (前面有四个空白字符)

 

2.

String s = "java24"; String r = "\\d+"; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group()); }
输出:24

 

?

 匹配前面的字符0次或者一次

匹配正负数:

String s = "-12java24"; String r = "-?\\d+"; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s);

输出:-12

          24

\d匹配数字字符参照前面
(x)匹配x并记住这个匹配,作为捕获括号
String s = "java12java24java"; String r = ".*?(\\d+).*?(\\d+).*"; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group(1)); }

输出:12

此时的group(1)捕获的是正则表达式的第一个括号内容


 
.*  and .*?

.*会优先本次的条件,最大程度的进行匹配,为贪婪匹配

.*?会考虑后面的匹配条件,为非贪婪匹配

例如:

String s = "java12"; String r = ".*(\\d+)"; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group(1)); }

输出:2

 

String s = "java12"; String r = ".*?(\\d+)"; Pattern p = Pattern.compile(r); Matcher m = p.matcher(s); while(m.find()){ System.out.println(m.group(1)); }

输出:12

如果有错误,希望能够指出哈,其余内容后续更新哈

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值