超好的文章
对正则表示式的经典阐述,参考下面这篇文章:
经典的文章
以下所写的内容都基于java 的讨论。
自己遇到的一些问题
- 从字符串中提取第一个左括号的字符,需要的知识点:
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个""来表示出我们认识的“(”了。