自己对Java正则表达式的一些总结

超好的文章

对正则表示式的经典阐述,参考下面这篇文章:
经典的文章
以下所写的内容都基于java 的讨论

自己遇到的一些问题

  1. 从字符串中提取第一个左括号的字符,需要的知识点:
    1)懒惰匹配
    2)零宽断言
    不多说直接上代码。
package corporation.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*找到第一个的左括号的东西。*/
public class First {
    public static void main(String[] args) {
        String s = "北京(朝阳)(三里敦)(天安门)";
        Pattern p = Pattern.compile(".*?(?=\\()");
        Matcher m = p.matcher(s);
        if (m.find()) {
            System.out.println(m.group());
        }
    }
}
输出:北京

一些懒惰匹配的表示

*?重复任意多次,但是尽可能少
+?重复1次或更多,但是尽可能少
??0次或1次,但是尽可能少

2 对于转义字符"“的理解
1)“\”表示的是我们人类认识的”"。例如,我们想做的事是分离我们的电脑路径

import org.junit.Test;

import java.util.Arrays;

public class TestAll {
    @Test
    public void test2() {
        String str = "E:\\project";
        String[] arr=str.split("\\\\");
        System.out.println(Arrays.toString(arr));
    }
}

2)还有一个问题是对于** Pattern p = Pattern.compile(".*?(?=\()");**中的(为什么要2个的“\”来转义呢?
括号是需要转义的所以表示为"(",然后有“\”本身是需要的,所有最后会有2个""来表示出我们认识的“(”了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值