浅谈Java中关于正则的使用

xiaoxiao2021-02-28  121

  研究了一下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

  

转载请注明原文地址: https://www.6miu.com/read-20486.html

最新回复(0)