正则表达式就是字符串的匹配和查找的利器,在java语言中虽然有String和StringBuffer,但是他们却不如正则表达式灵活!
这只是基础学习
简单例子:
"abc".matches("...");
"a8729a".replaceAll("\\d", "-");
Pattern p = Pattern.compile("[a-z]{3}");
Matcher matcher = p.matcher("afs");
matcher.matches();
// . + * ?:.代表任意字符,+至少一次,*至少零次,?零或一次
"a".matches(".");
"aa".matches("aa");
"aaaa".matches("a*");
"aaaa".matches("a+");
"".matches("a*");
"aaaa".matches("a?");
"".matches("a?");
"a".matches("a?");
"214523145234532".matches("\\d{3,100}");
"192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");
"192".matches("[0-2][0-9][0-9]");
// 范围 ^在[]里是非,&&与
"a".matches("[abc]");
"a".matches("[^abc]");
"A".matches("[a-zA-Z]");// 或
"A".matches("[a-z]|[A-Z]");// 或
"A".matches("[a-z[A-Z]]");// 或
"R".matches("[A-Z&&[RFG]]");// 且
// 认识\s \w \d \:\s是空白字符,\S非空白字符,\w单词字符([a-zA-Z0-0_]),\W费单词字符,\d数字,\转义字符
" \n\r\t".matches("\\s{4}");//ture
" ".matches("\\S");//false
"a_8".matches("\\w{3}");//true
"abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+");//true
"\\".matches("\\\\");//true
// 边界 \b:单词边界,^开头,$结尾
"hello sir".matches("^h.*");
"hello sir".matches(".*ir$");
"hello sir".matches("^h[a-z]{1,3}o\\b.*");
// 空白行
" \n".matches("^[\\s&&[^\\n]]*\\n$");
// 练习
"aaa 8888c".matches(".*\\d{4}.");// true
"aaa 8888c".matches(".*\\b\\d{4}.");// true
"aaa8888c".matches(".*\\d{4}.");// true
"aaa8888c".matches(".*\\b\\d{4}.");// false
"444347292@qq.com".matches("[\\w.-]+@[\\w.-]+\\.[\\w]+")
// matches find lookingAt start end:matches整个匹配,find找子串,lookingAt每次都从头开始找,start匹配的起始位置,end匹配的最末位置的下一个
Pattern pattern = Pattern.compile("\\d{3,5}");
String string = "123-34345-234-00";
Matcher matcher = pattern.matcher(string);
matcher.matches();// matches是匹配整个字符串,会有影响
matcher.reset();
matcher.find();// 找子串,会有影响
matcher.start();
matcher.end();// 最后一个字符的后一个
matcher.find();
matcher.find();
matcher.find();
matcher.lookingAt();// 每次找都是从开头开始找
matcher.lookingAt();
matcher.lookingAt();
matcher.lookingAt();
// replacement:替换
Pattern pattern = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher("java Java JAVa JaVa IloveJAVA you hateJava test");
// while (matcher.find()) {
// System.out.println(matcher.group());//找到java
// }
// System.out.println(matcher.replaceAll("JAVA"));//把java都替换为JAVA
// 单数java为大写,双数java为小写
StringBuffer buffer = new StringBuffer();
int i = 0;
while (matcher.find()) {
i++;
if (i % 2 == 0) {
matcher.appendReplacement(buffer, "java");
} else {
matcher.appendReplacement(buffer, "JAVA");
}
}
matcher.appendTail(buffer);
System.out.println(buffer);
// group:分组
Pattern pattern = Pattern.compile("(\\d{3,5})([a-z]{2})");// 3组,第一个左小括号是第一组
String string = "123aa-34345bb-234cc-00";
Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println(matcher.group(2));//整体是()
}