GeXiangDong

精通Java、SQL、Spring的拼写,擅长Linux、Windows的开关机

0%

java正则表达式从字符串提取信息

使用正则表达式,从markdown文件中提取链接显示的字符和链接到的地址。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
String content = "这是段.md文件的内容。其中[这是一个链接](./html/README.md),还有其他内容,这里又有一个[another link](another.md),这次链接到了another.md。";

//括号用于分组;需要匹配括号则用\c
//[^\]] 表示任意不是']'的字符,后面的*表示任意多个
Pattern p = Pattern.compile("\\[([^\\]]*)\\]\\(([^\\)]*)\\)", Pattern.CASE_INSENSITIVE);

Matcher matcher = p.matcher(content);
while(matcher != null && matcher.find()) {
String link = matcher.group();
for(int i=0; i<= matcher.groupCount(); i++){
//得到的分组,第0个是整个字串,例如第一次发现时打印:[这是一个链接](./html/README.md)
//第一个是正则表达式中第一个括号匹配到的内容,例如第一次发现时打印:这是一个链接
System.out.println(matcher.group(i));
}
System.out.println();
}

运行结果:

1
2
3
4
5
6
7
[这是一个链接](./html/README.md)
这是一个链接
./html/README.md

[another link](another.md)
another link
another.md