JAVA使⽤正则表达式提取想要的内容
有时候我们想从⼀段⽂字中提取想要的内容,如省市区地址中提取出省市,从股票的数据中提取出关键的价格信息,抓取HTML⽂件后提取内容等等这些场景,这时我们可以使⽤JAVA正则表达式帮助我们提取出想要的数据。
我们试着从地址中提取省市信息,⽰例⽂本如:福建省厦门市杏林区,我们在IDE中健⼊如下代码进⾏提取:
String address = "福建省厦门市杏林区";
Pattern ptn = Patternpile("([\\u4e00-\\u9fa5]+省)?([\\u4e00-\\u9fa5]+市)(.*)");
Matcher matcher = ptn.matcher(address);
if (matcher.matches()) {
String province = up(1);
String city = up(2);
System.out.println("省:" + province);
System.out.println("市:" + city);
}
执⾏代码后控制台输出如下结果:
<pre>
省:福建省
市:厦门市
</pre>
这⾥需要注意的是中⽂的正则范围为:[u4e00-u9fa5],并且正则提取内容以()分组,即([\\u4e00-\\u9fa5]+省)为提取省份的组,([\\u4e00-\\u9fa5]+市)为提取城市的组,提取数据时下标是从组所在的位置开始,即从1开始⽽不是从0开始,这点需要注意。
⽤下标来提取数据有时候显得不那么好看,如果要修改提取规则还得从头数有⼏个组,挺费劲的也容
易出错,那么我们改⼀下代码:
String address = "福建省厦门市杏林区";
Pattern ptn = Patternpile("(?[\\u4e00-\\u9fa5]+省)?(?[\\u4e00-\\u9fa5]+市)(.*)");
Matcher matcher = ptn.matcher(address);
if (matcher.matches()) {
String province = up("province");
String city = up("city");
System.out.println("省:" + province);
System.out.println("市:" + city);
}java修改html文件
我们发现得到的效果是⼀样的,我们只是在提取数据的分组内给他取⼀个别名,如?<province>取数时从下标换成别名,这是个很好的⽅法因为这样看起来会更加的友好下次维护起来也⽅便多了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论