Java正则表达式(正则表达式基础)

1. 元字符

1)”-”(连字符)是一个特殊的元字符,它只有出现在[和]之间的时候才是元字符。字符集以外的地方,”-”只是一个普通字符;

2)”^”的效果将作用于给定字符集合里的所有字符或字符区间,而不是仅限于紧跟在”^”字符后面的那一个字符或字符区间;

[^a-z]:排除小写字母。^a-z: a-z 开头字符串。

3)一般来说,当在字符集合里使用的时候,像”.”和”+”这样的元字符将被解释为普通字符,不需要转义,但转义了也没坏处。[\w.] 的效果与[\w\.]是一样的;

2 位置匹配

\b 匹配的是字符之间的一个位置,一边是单词(能被\w匹配的字母,数字和下划线),另一边是其他内容(能被\W匹配的字符)。

3 反向引用

指这些实体引用的是先前的子表达式(可以把反向引用想象成变量)。

3.1 替换操作

    public static void testReplace() {
        String dateStr = "313-555-1234\n248-555-9999\n810-555-9000";
        System.out.println(dateStr.replaceAll("(\\d{3})(-)(\\d{3})(-)(\\d{4})","($1) $3-$5"));;
    }

    运行结果:
    (313) 555-1234
    (248) 555-9999
    (810) 555-9000

4 环视

4.1 向前看

向前看模式的长度是可变的,其中可以包含”.”和”+”等量词,非常灵活。

    public static void testLookahead() {
        String str = "https://www.baiduo.com\nhttp://www.mail.com\nftp://forta.com";
        Matcher matcher = Pattern.compile("\\w+(?=:)").matcher(str);
        Matcher matcher1 = Pattern.compile("\\w+:").matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
        System.out.println("--------------");
        while (matcher1.find()) {
            System.out.println(matcher1.group());
        }
    }

    运行结果:
    https
    http
    ftp
    --------------
    https:
    http:
    ftp:

“(?=)” 向前查看操作符。 

4.2 向后看

向后看模式则只能是固定长度。

    public static void testLookbehind() {
        String goodsList = "apple: ¥6.34\n" +
                            "banner: ¥12.34\n" +
                            "orange: ¥21";
        Matcher matcher = Pattern.compile("(?<=¥)[0-9.]+").matcher(goodsList);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }

    运行结果:
    6.34
    12.34
    21

“(?<=)” 向后查看操作符。 

4.3 否定式环视

    public static void testNavigate() {
        String str = "I paid $30 for 5 apple";
        Matcher matcher = Pattern.compile("\\b(?<!\\$)\\d+\\b").matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }

    运行结果:
    5 

(?<!) 否定式向后看,(?!) 否定式向前看 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值