正则表达式练习

package test.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则练习
 * 
 * @author aL-junit
 *
 */

public class RegexDemo {
    public static void main(String[] args) {
        
        System.out.println("============================");
        //RegexDemo.matcherAndPattern();
        //RegexDemo.regexBor();
        RegexDemo.andOr();

    }

    public static void matcherAndPattern() {
        // 匹配规则定义
        String regex = "([0-9]{6}@[q][q].com)|([0-9]+@[q][a-f].com)";
        // 转化为正则匹配对象
        Pattern p = Pattern.compile(regex);
        // 被匹配对象
        String str = "sdaasaew@yahoo.com,453178862@qq.com,abd@google.com,1231311@qc.com,1231311@ag.com";
        // 使用规则进行匹配
        Matcher m = p.matcher(str);
        //
        System.out.println("regex:" + p);
        // 找到返回true
        // System.out.println("regex:" + m.find(1));
        // 使用过find()之后,要从新开始匹配
        while (m.find()) {
            System.out.println("Matched  Text:" + m.group() + ", Start:"
                    + m.start() + ", " + "End:" + m.end());
        }

    }
    
    public static void regexBor() {
        // \b字边界
        String regex = "\\bJava\\b";
        String replacementStr = "XML";
        String inputStr = "Java and Javascript";
        // 替换模式与给定替换字符串相匹配的输入序列的每个子序列。
        String newStr = inputStr.replaceAll(regex, replacementStr);

        System.out.println("规则定义: " + regex);
        System.out.println("被匹配的原字符串: " + inputStr);
        System.out.println("替换对象:  " + replacementStr);
        System.out.println("替换之后的字符串:  " + newStr);
    }

    public static void andOr() {
        /*
         * “ ^ ”:匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与”\n”或”\r”之后的位置匹配(即匹配每一行的开始);“ $ ” :匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与”\n”或”\r”之前的位置匹配(即匹配每一行的结束)。
         */
        // 匹配邮箱
        String regex = "^.+@.+(\\..+){1,}$";
        String str = "fushb@163.com";
        //System.out.println(str.matches(regex));

        // 匹配固定电话 4位区号-7位号码 或者 3位区号-8位号码
        String regex2 = "^\\d{4}-\\d{7}|\\d{3}-\\d{8}$";
        String str2 = "020-13222113";
        String str3 = "0532-9989211";
         //System.out.println(str2.matches(regex2));
        //System.out.println(str3.matches(regex2));

        // 匹配除了a和9之外的数字或字符
        String regex3 = "^[^9a]{1,}$";
        String str4 = "1234fsfse";
        String str5 = "a2343";
         System.out.println(str4.matches(regex3));
        System.out.println(str5.matches(regex3));

        // ^和$的用法 (^可以了解非。。。开头。$可以了解。。结束)
        String a = "3131sasfasd".replaceAll("\\d{2}", "Z");
        String b = "3131sasfasd".replaceAll("^\\d{2}", "Z");// 仅替换字符串开头的两个数字
        String c = "3131sdasfasd".replaceAll("sd", "Z");
        String d = "3131sdsfasd".replaceAll("sd$", "Z");// 仅替换字符串开头的两个数字
        //System.out.println(a);// ZZZsasfasd
        //System.out.println(b);// Z3131sasfasd
        //System.out.println(c);// aa3131ZasfaZ
        //System.out.println(d);// aa3131sdsfaZ
        String str6 = "aa3131sasfasd";
        //System.out.println(str6.matches("\\d{2}")); // false
        //System.out.println(str6.matches("^\\d{2}"));// false
    }

}
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值