浅谈Java中关于正则的使用

  研究了一下javaAPI文档,在此对正则的使用做些总结说明。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo {
	public static void main(String[] args) {
		 Pattern p = Pattern.compile("a*b");
		 Matcher m = p.matcher("aaaaab");
		 if(m.matches()) {
			 System.out.println(m.group());
		 }
	}
}
  这段代码实现的功能是:用编好的正则模式来匹配给定的目标字符串,如果检测匹配成功就返回在目标字符串中匹配的字符序列。

  用到的方法有:

  pattern类中的compile方法、matcher方法以及matches方法

static Pattern	compile(String regex) 将给定的正则表达式编译到模式中。
Matcher	matcher(CharSequence input) 创建匹配给定输入与此模式的匹配器。
static boolean	matches(String regex, CharSequence input) 编译给定正则表达式并尝试将给定输入与其匹配。

  matcher类中的group方法

 String	group() 返回由以前匹配所匹配的输入子序列。
  所以上面的这段代码运行结果为:

aaaaab
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo {
	public static void main(String[] args) {
		 Pattern p = Pattern.compile("\\d{3,5}");
		 Matcher m = p.matcher("123-23245-21-456544849846");
		 if(m.find()) {
			 System.out.println(m.group()+"\t"+m.start()+"-"+m.end());
		 }
		 if(m.find()) {
			 System.out.println(m.group()+"\t"+m.start()+"-"+m.end());
		 }
		 if(m.find()) {
			 System.out.println(m.group()+"\t"+m.start()+"-"+m.end());
		 }
		 if(m.find()) {
			 System.out.println(m.group()+"\t"+m.start()+"-"+m.end());
		 }
		 m.reset();
		 if(m.find()) {
			 System.out.println(m.group()+"\t"+m.start()+"-"+m.end());
		 }
	}
}
  这里又用到的方法有:

  matcher类中的find方法、reset方法、start方法和end方法

 boolean  find()  尝试查找与该模式匹配的输入序列的下一个子序列。
Matcher	reset() 重置匹配器。
int  start() 返回以前匹配的初始索引。
int  end() 返回最后匹配字符之后的偏移量。
   这个程序的运行结果为:

123	0-3
23245	4-9
45654	13-18
48498	18-23
123	0-3

注意:通过上述例子可以看到,每次使用find()方法匹配时都会将原字符串进行截取操作,也就是原字符串长度减小。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo {
	public static void main(String[] args) {
		 String str="123-23245-21-4565448";
		 Pattern p = Pattern.compile("((\\d*)-)*\\d*");
		 Matcher m = p.matcher(str);
		 System.out.println(m.matches());
		 String[] strs=str.split("-");
		 for(int i=0;i<strs.length;i++) {
			 System.out.println(strs[i]);
		 }
	}
}
  这里用到了spilt方法来按指定正则分割匹配字符串。

 String[]  split(CharSequence input) 围绕此模式的匹配拆分给定输入序列。
  这个程序的运行结果如下:

true
123
23245
21
4565448

















  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值