自己对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个""来表示出我们认识的“(”了。

你可能感兴趣的:(学习)