java正则匹配段落_Java使⽤正则表达式获取⽂本的章节名称获取⽂本的章节,⾸先要确定章节的开始标准,⼀般中⽂的章节都是以“第”开头,第⼀章、第⼆章等。所以使⽤“^”字符来确定⾸位,但是很多时候章节前⾯会有空⽩字符,所有以“第”作为章节的开始,进⾏以下的匹配
^\\s*第
“\s”表⽰空⽩字符,加上“*”表⽰0到多个空⽩字符,“^”表⽰是以空⽩字符加上“第作为开始的”。如果需要匹配的字符串不是在段落的开始,把“^”去掉即可。
章节的序号格式不统⼀,有可能是阿拉伯数字,也有可能是中⽂,长度⼀般不会超过9位,所以以任意字符来匹配
.{1,9}
“.”表⽰任意字符,“{1,9}”表⽰长度最⼩1次,最⼤9次。
章节序号后⾯是修饰
[章节卷集部篇回]
“[]” 表⽰⾥⾯的字符有⼀个出现了,“[]”匹配单字符,相当于 “章”或“节”或“卷”或“集”或“部”或“篇”或“回” 出现了。
在标题前⾯⼀般有空⽩字符,也有可能没有所以添加空⽩字符的匹配
\\s*
章节标题可以是任意字符,任意字符是“.”,0到多个任意字符就是
.*
⼀般章节过后就是换⾏,所以最后要有换⾏的匹配
\n|\r|\r\n
将上⾯的所有正则组合成⼀个就是
(^\\s*第)(.{1,9})[章节卷集部篇回](\\s*)(.*)(\n|\r|\r\n)
这个正则表达式中⼀个有个6个group,整个表达式是第⼀个group,每个“()”⾥⾯的就是⼀个group,[章节卷集部篇回]是⼀个group,完成了正则表达式,我们就可以⽤Java获取段落的章节标题了。
public classTestRegex {/***@paramargs*/
public static voidmain(String[] args) {
String testString= "第⼀回 风雪惊变\r\n 钱塘江浩浩江⽔,⽇⽇夜夜⽆穷⽆休的从临安⽜家村边绕过,东流⼊海。";
Pattern p= Patternpile("(^\\s*第)(.{1,9})[章节卷集部篇回](\\s*)(.*)(\n|\r|\r\n)");
Matcher matcher=p.matcher(testString);while(matcher.find()) {for (int i = 0; i <= upCount(); i++) {
System.out.println("group" + i + " : " + matcher.start(i) + " - " +d(i));
System.out.up(i));
}
}
}
正则表达式提取中文}
输出结果:
group0 : 0 - 9
第⼀回 风雪惊变group1 : 0 - 1第
group2 : 1 - 2⼀
group3 : 3 - 4 group4 : 4 - 8风雪惊变
group5 : 8 - 9
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论