java正则表达式Pattern和Matcher

正则表达式,不止是java支持,有很多语言都支持正则表达式,严格意义上来说,正则表达式已经不仅仅是一个表达式那么简单而已,从某种角度上看,称之为“正则表达式语言”也毫不为过。本篇文章讨论的是什么,不是正则表达式有哪些部分组成,也不给你详细列出正则表达式的元字符有哪些,量词有哪些,只说说在java里面怎么使用正则表达式。

        java里面如果想使用正则表达式,有两个类必须要知道,也就是标题里面的Pattern和Matcher。Pattern用于编译你书写的正则表达式为Pattern的实例对象pattern,再通过这个实例对象pattern获取匹配到的内容,匹配到的内容存放在Matcher的对象matcher中。我们看下面的例子,简单而又囊括了该说的知识点。

主要功能:获取一个类似“23.53万美元”美元的各个部分,已知:

        1.数字部分可以是负数

        2.数字部分可能是小数也可能是整数

        3.后边的单位是汉字,可有可无

package com.sms.service.impl;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ConfigServiceImpl {
	public static void main(String[] args) {
		String registCapi="aaaa23.53万美元";
		//第二个参数是设置匹配的模式。这里分别设置了不区分大小写和多行匹配
		Pattern pattern = Pattern.compile("([-]?\\d+(\\.\\d+)?)([^\\w]*)",
				Pattern.CASE_INSENSITIVE|Pattern.MULTILINE);
		 Matcher matcher = pattern.matcher(registCapi);
		 if (matcher.find()) {
			//相当于matcher.group();代表匹配到的整体
			 String input = matcher.group(0);
			 //第一个分组([-]?\\d+(\\.\\d+)?)匹配到的内容
			 String num= matcher.group(1);
			 //第二个分组(\\.\\d+)?匹配到的内容
			 String dotNum= matcher.group(2);
			 //第三个分组([^\\w]*)匹配到的内容
			 String unit = matcher.group(3);
			 System.out.println(input);
			 System.out.println(num);
			 System.out.println(dotNum);
			 System.out.println(unit);
		 }	 
	}
}

执行结果:

23.53万美元
23.53
.53
万美元

代码说明:

        1.public  Pattern Pattern.compile(String regex, int flags)方法,第一个参数是要求你自己书写正则表达式了,如何书写正则表达式这个问题暂时不是本篇文章讨论的,第二个是设置匹配的模式,如Pattern.CASE_INSENSITIVE表示等下使用pattern.matcher(registCapi)匹配的时候不区分大小写,Pattern.MULTILINE表示要被匹配的输入字符串可能有很多行(比如是从文本文件中读取进来的),如果加了这个标志,那么表示所有行都参与匹配,否则就只匹配文本的第一行。

        2.如何获取匹配到的内容,使用matcher.group(参数)即可,我们知道"()"在正则表达式里面表示分组,这里因为我用到了分组,所以有group(1)、group(2)之说,如果没有分组,我们使用只使用matcher.group(0);获取匹配到的整体即可。当没有匹配到的时候,如果企图获取group,将会报错,所以加了个if (matcher.find()) {}确保匹配不到的时候也不会报错

        3.mather.find()作用是在输入的字符串中发现我们匹配到的内容,当能匹配到时返回true,否则返回false。

        4.分别把输入值registCapi替换成其他值测试一下,以便加深理解吧,各位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值