Java正则表达式
目录
正则表达式匹配规则
. 任意一个字符
? 被修饰的模式出现0/1次
*  被修饰的模式出现>=0次
+  被修饰的模式出现>=1次
\d 匹配数字
\b 单词边界
\w 匹配字符数字下划线,相当于[0-9a-zA-Z_]
[] 匹配之内的字符
()分组
Java中用到正则表达式的类:
java.lang.String
java.util.regex.Pattern
java.util.regex.Matcher
正则表达式可以做的事
字符串匹配
字符串查找
字符串替换
字符串分割
String的正则表达式
boolean	matches(String regex)//检查是否能匹配整个字符串
boolean	contains(CharSequence s)//查找
String[]	split(String regex)//分割字符串
String	replaceAll(String regex, String replacement)//替换
用例:
System.out.println("123".matches("\\d+"));//1
System.out.println("abc123".matches("\\w+"));//1
System.out.println(",./123abc".matches("\\w+"));//0
Pattern、Matcher正则表达式
//Pattern:
static Pattern	compile(String regex)
static Pattern	compile(String regex, int flags)//设置匹配的模式,例如不区分大小写
Matcher	matcher(CharSequence input)//根据input生成Matcher
static boolean	matches(String regex, CharSequence input)//input整个匹配regex
String[]	split(CharSequence input)//分割
//Matcher:
Matcher	appendReplacement(StringBuffer sb, String replacement)
StringBuffer	appendTail(StringBuffer sb)
boolean	find()
String	group()
String	group(int group)
boolean	matches()
String	replaceAll(String replacement)
用例
字符串匹配
        //要匹配的正则表达式
        String regex="\\b(\\w|\\.)+@\\w+(\\.\\w+)+\\b";
        //被匹配的字符串
        String source="My email is abcde.12345@163.com.";
        //编译正则表达式
        Pattern pattern=Pattern.compile(regex);
        //根据源字符串生成Matcher
        Matcher matcher=pattern.matcher(source);
        //依次匹配子串
        while(matcher.find())
        {
            //本次被匹配到的字串
            System.out.println(matcher.group());
        }
字符串替换
//全部替换为一样的
string.replaceAll(regex,replacement)
//区分替换的位置
        Pattern pattern = Pattern.compile("java", Pattern.CASE_INSENSITIVE);//不区分大小写
        String source = "java Java jAva ILoveJavA youHateJAVA adsdsfd";
        Matcher matcher = pattern.matcher(source);
        StringBuilder builder = new StringBuilder();
        int i = 0;
        while (matcher.find()) {
            i++;
            if (i % 2 == 1)
                matcher.appendReplacement(builder, "you");
            else
                matcher.appendReplacement(builder, "me");
        }
        matcher.appendTail(builder);
        System.out.println(builder);
应用场景
输出所有匹配到的子串
while(matcher.find())
sout(matcher.group())
替换字符串
string.replaceAll(regex,replacement)
或者
matcher.replaceAll()
或者
matcher.appnedReplacement(stringBuilder,replacement)
匹配模式分组
while(matcher.find())
sout(matcher.group(index))
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号