JAVA中使用正则表达式的若干方法
正则的具体写法不是重点,一般常用的还是比较简单的
主要想说的是在JAVA里使用正则的几种情况
先来定义两个变量:
1、被查找的字符串:str
2、要查找的关键字(或正则表达式):keywordPattern
情况一:判断str里是否含有keywordPattern
importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassRegTest{publicstaticvoidmain(String[]args){Stringstr="我是人。。我是好人。。我是好男人。。--!!";PatternkeywordPattern=Pattern.compile("好男人");Matchermatcher=keywordPattern.matcher(str);System.out.println(str.find());}}输出:true
情况二:判断str是否完全符合keywordPattern,可用于邮箱验证等情况
publicclassRegTest{publicstaticvoidmain(String[]args){Stringstr="abcd1234ABCD";PatternkeywordPattern=Pattern.compile("^[a-zA-Z0-9]+$");Matchermatcher=keywordPattern.matcher(str);System.out.println(matcher.matches());//System.out.println(matcher.find());也可以实现同样的效果}}输出:true
情况三:将str中符合keywordPattern的字符都替换掉
importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassRegTest{publicstaticvoidmain(String[]args){Stringstr="abcd1234ABCD";PatternkeywordPattern=Pattern.compile("[0-9]");Matchermatcher=keywordPattern.matcher(str);System.out.println(matcher.replaceAll("@"));}}输出:abcd@@@@ABCD
情况四:将str中符合keywordPattern的字符替换掉一部分,某些被替换的字符还需保留
importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassRegTest{publicstaticvoidmain(String[]args){Stringstr="12[3]456[7]890";PatternkeywordPattern=Pattern.compile("\\[(\\d)\\]");Matchermatcher=keywordPattern.matcher(str);System.out.println(matcher.replaceAll(""));}}输出:12456890
情况五:将str中符合keywordPattern的字符替换掉一部分,某些被替换的字符还需做为参数进行处理
importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassRegTest{publicstaticvoidmain(String[]args){Stringstr="a[b]cdef[g]hij[k]lmn";PatternkeywordPattern=Pattern.compile("\\[([a-z])\\]");Matchermatcher=keywordPattern.matcher(str);StringBufferstrB=newStringBuffer();while(matcher.find()){matcher.appendReplacement(strB,getChar(matcher.group(1)));}matcher.appendTail(strB);System.out.print(strB.toString());}publicstaticStringgetChar(Stringnum){return"["+num.toUpperCase()+"]";}}输出:a[B]cdef[G]hij[K]lmn
其中第四和第五两种方法,可以实现公式解析和模板解析等复杂功能。