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
}
}