java正则表达式

正则表达式速查表:https://www.jb51.net/tools/regexsc.htm

java正则语法手册:http://www.runoob.com/java/java-regular-expressions.html

常用正则表达式大全:https://blog.csdn.net/mynamepg/article/details/83091023

正则表达式在线测试 - 站长工具:http://tool.chinaz.com/regex/

正则表达式在线生成工具 - 正则表达式工具 - 脚本之家在线工具:http://tools.jb51.net/regex/create_reg

java正则表达式详解:

Pattern 详解(一):https://blog.csdn.net/liupeifeng3514/article/details/80030360

Pattern 详解(二):https://blog.csdn.net/liupeifeng3514/article/details/80035865

详解Matcher 详解:https://blog.csdn.net/liupeifeng3514/article/details/80043311

 

 

java 正则工具类RegexUtil:https://blog.csdn.net/mynamepg/article/details/83182359

java正则Matcher.matches()、Matcher.lookingAt()、Matcher.find()、 group()详解:

https://blog.csdn.net/mynamepg/article/details/83181945

正则表达式真的很骚,可惜你不会写!:

https://mp.weixin.qq.com/s/gMA8xnUhhrIrcUmV8wrvkQhttps://blog.csdn.net/mynamepg/article/details/83109714

正则表达式(Java版整理):

https://www.cnblogs.com/yw0219/p/8047938.htmlhttps://blog.csdn.net/mynamepg/article/details/83110538

注意:

1、首先这里要先普及一个小知识点,在其他语言中,\\表示我想要在正则表达式中插入一个普通的反斜杠,请不要给它任何特殊的意义,而在Java中,\\表示我要插入一个正则表达式的反斜杠,所以其后的字符具有特殊的意义。也就是说,在Java里,只有\\才表示转义,不同于其他语言\就能代表转义。

2、?在重复限定符后表示尽可能少重复,不是贪婪模式了

3、零宽断言(?=exp)、(?<=exp)

小括号的另一种用途是通过语法(?#comment)来包含注释。例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d \d?(?#0-199)

正则:

1、匹配xxx前面的位置

csdn(小溪彼岸)正则使用从0开始学习(一):https://blog.csdn.net/zww1984774346/article/details/78518168

文本:How are you doing

正则:.*?(?=ing)

匹配结果: How are you do

2、正则表达式匹配大括号的内容(包括大括号)

{[\S\s]+}

3、正则表达式匹配大括号里面的内容(不包括大括号)

正则表达式: (?<=\{)[^}]*(?=\})

(?<=\{) 匹配以左花括号开头 
[^}]* 取得内容 
(?=\}) 匹配以右花括号结束

4、正则获取HTML代码中img的src地址

5、替换文档里面某个字符串

String str="张三和王四是中国人"; 

String regex2="[(张三)(王四)]";//一个*代替一个字

         String regex3="(张三)";//一个字代替一个括号里面的内容

         String str2=str.replaceAll(regex2,"*");

         System.out.println(str2);

         String str3=str.replaceAll(regex3,"*");

6、分组替换,如替换手机号的中间四位

idCard.replaceAll("(\\d{4})\\d{10}(\\w{4})","$1*****$2");
4304*****7733

$1、$2、……表示正则表达式里面第一个、第二个、……括号

但是 对应括号内的内容不替换

7、查找比如超找英文作文中单个字符的单词

使用 Pattern Matcher

String str4="gello hh jjjnihao good  god dog mmm";

         Pattern a=Pattern.compile("\\b[a-zA-Z]{3}\\b");

         Matcher m=a.matcher(str4);

         while (m.find()) {

                   System.out.println(m.group());

         }

         }

常用

一.介绍:

正则表达式在java.util.regex里面,具体的各种用法可以查找api手册

二. 常用格式

其中:^表示以此正则表达式开始 $是以此正则表达式结尾

 1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
 2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
 3 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
 4 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
 5 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$ 
 6 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
 7 身份证号:
       15或18位身份证:^\d{15}|\d{18}$
       15位身份证:^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$

 8 中国邮政编码:[1-9]\d{5}(?!\d)    (中国邮政编码为6位数字)
  9 IP地址:\d+\.\d+\.\d+\.\d+    (提取IP地址时有用)

三、校验字符的表达式

 1 汉字:^[\u4e00-\u9fa5]{0,}$
 2 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
 3 长度为3-20的所有字符:^.{3,20}$
 4 由26个英文字母组成的字符串:^[A-Za-z]+$
 5 由26个大写英文字母组成的字符串:^[A-Z]+$
 6 由26个小写英文字母组成的字符串:^[a-z]+$
 7 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
 8 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
 9 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
10 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
11 可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+
12 禁止输入含有~的字符:[^~\x22]+

四、取出匹配的所有字符串

String content="2019年05月25日前应收取货款30,000.00元,截止当前尚余9,500.00元金额未收,请催收!";
        String regex="([\\s\\S]+?)前应收取货款([\\s\\S]+?)元,截止当前尚余([\\s\\S]+?)元金额未收,请催收!";
        List<String> matchs =new ArrayList<>();
        Matcher m = Pattern.compile(regex, Pattern.CASE_INSENSITIVE).matcher(content);
        int i = m.groupCount();
        System.out.println(i);
        int j=0;
        while (m.find()) {
           String match = m.group(1).trim();
           if(StringUtils.isNotBlank(match)){
               matchs.add(match);
           }
            String match2 = m.group(2).trim();
            if(StringUtils.isNotBlank(match2)){
                matchs.add(match2);
            }
            String match3 = m.group(3).trim();
            if(StringUtils.isNotBlank(match3)){
                matchs.add(match3);
            }
            System.out.println(j+"次:"+matchs.toString());
            j++;
        }
        System.out.println("================");
        System.out.println(matchs);

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值