JAVA与正则表达式


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

/***
* JAVA正则表达式测试
* @author greatwqs
*
*/
public class RegexExpressionTest {

public static void main(String[] args) {

//简单认识正则表达式的概念
// =============================================================================
println("abc".matches("..."));
println("a8729a".replaceAll("\\d", "-"));
Pattern p = Pattern.compile("[a-z]{3}");
Matcher m = p.matcher("fgh");
println(m.matches());
println("fgha".matches("[a-z]{4}")); // matches是匹配整个字符串,在这里为"fgha"


//初步认识. * + ?==============================================================
// X* X出现0次以上(包括0次)
// X+ X出现1次以上(包括1次)
// println("a".matches("."));
// println("aa".matches("aa"));
// println("aaaa".matches("a*"));
// println("aaaa".matches("a+"));

// println("".matches("a*"));
// x? -- 0个或者一个x
// println("aaaa".matches("a?"));
// println("".matches("a?"));
// println("a".matches("a?"));
// x{3,100} x出现3-100次
// println("214523145234532".matches("\\d{3,100}"));
// println("192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));
// println("192".matches("[0-2][0-9][0-9]"));

// =============================================================================
//范围 ^在[]之间表示非,在最外面表示一行的开头
// println("a".matches("[abc]"));
// println("a".matches("[^abc]"));
// println("A".matches("[a-zA-Z]"));
// println("A".matches("[a-z]|[A-Z]"));
// println("A".matches("[a-z[A-Z]]")); // 相当于println("A".matches("[a-z]|[A-Z]"));
// println("R".matches("[A-Z&&[RFG]]"));

// =============================================================================
//认识\s \w \d \
// println(" \n\r\t".matches("\\s{4}")); //true
// println(" ".matches("\\S")); //false
// println("a_8".matches("\\w{3}")); //true
// println("abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+")); // true \\d+ 表示数字出现1次以上
// println("\\".matches("\\\\")); //true
//"\\"为一个反斜线(JAVA语法); 在正则表达式中"\\"代表一个反斜线字符,
// 而这个在JAVA中\需要转义,所以正则表达式在JAVA中表示一个反斜线需要4个\,即"\\\\"

// =============================================================================
//POSIX Style 为Unix的一套标准
// println("a".matches("\\p{Lower}"));
/*\p{Lower} 小写字母字符:[a-z]
\p{Upper} 大写字母字符:[A-Z]
\p{ASCII} 所有 ASCII:[\x00-\x7F]
\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]
\p{Digit} 十进制数字:[0-9]
\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} 可见字符:[\p{Alnum}\p{Punct}]
\p{Print} 可打印字符:[\p{Graph}\x20]
\p{Blank} 空格或制表符:[ \t]
\p{Cntrl} 控制字符:[\x00-\x1F\x7F]
\p{XDigit} 十六进制数字:[0-9a-fA-F]
\p{Space} 空白字符:[ \t\n\x0B\f\r] */



// =============================================================================
//boundary 边界匹配开头(^)和结尾($)
// "^"在开头则表示一行的开始,EG: "^h.*"; "^"在[]里面表示非,EG: "[^1-9]"
// println("hello sir".matches("^h.*")); // true
// println("hello sir".matches(".*ir$")); // true
// println("hello sir".matches("^h[a-z]{1,3}o\\b.*")); // true 正则"\b"表示单词边界
// println("hellosir".matches("^h[a-z]{1,3}o\\b.*")); // false

// =============================================================================
//whilte lines 空白行
// println(" \n".matches("^[\\s&&[^\\n]]*\\n$"));
//
// println("aaa 8888c".matches(".*\\d{4}."));
// println("aaa 8888c".matches(".*\\b\\d{4}."));
// println("aaa8888c".matches(".*\\d{4}."));
// println("aaa8888c".matches(".*\\b\\d{4}.")); // false

// =============================================================================
// 匹配Email地址
// println("greatwqs@163.com".matches("[\\w]+@[\\w]+\\.[\\w]+")); // "\\w"表示单词字符:[a-zA-Z_0-9]
//email
// println("asdfasdfsafsf@dsdfsdf.com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));
// true [.-] ".","-"取其一

// =============================================================================
//matches find lookingAt
// Pattern p = Pattern.compile("\\d{3,5}");
// String s = "123-34345-234-00";
// // 01234567890123456789
// Matcher m = p.matcher(s);
// // println(m.matches());
// // m.reset(); // 进行重置, 相当于没有调用println(m.matches());
// println(m.find()); // find找匹配的子串返回
// println(m.start() + "-" + m.end());
// println(s.substring(m.start(),m.end())); // 上面find匹配的子串
// println(m.find());
// println(m.start() + "-" + m.end());
// println(m.find());
// println(m.start() + "-" + m.end());
// println(m.find());
// // println(m.start() + "-" + m.end());
// // 前面的println(m.find());为false, 所以表示没有子串匹配, 所以就不能打出下标
// println(m.lookingAt());
// // 从匹配的字符串的起始位置匹配相当于m.reset();再m.find();
// println(m.lookingAt());
// println(m.lookingAt());
// println(m.lookingAt());

// =============================================================================
//replacement 字符串的替换
// Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
// Matcher m = p.matcher("java Java JAVa JaVa I love JAVA you hate Javaf");
// println(m.replaceAll("JAVA"));

// =============================================================================
//group
// Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");
// String s = "123aa-34345bb-234cc-00";
// Matcher m = p.matcher(s);
// while(m.find()) {
// println(m.grouprintln()); // 打印子串
// println(m.start() + "-" + m.end()); // 打印下标
// println("");
// }

// =============================================================================
//flags的简写
// println("Java".matches("(?i)(java)"));

// =============================================================================
//replacement 字符串的替换, 偶数转化为小写,基数转化大写算法
// Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
// Matcher m = p.matcher("java Java JAVa JaVa IloveJAVA you hateJava afasdfasdf");
// StringBuffer buf = new StringBuffer();
// int i=0;
// while(m.find()) {
// i++;
// if(i%2 == 0) {
// m.appendReplacement(buf, "java");
// } else {
// m.appendReplacement(buf, "JAVA");
// }
// }
// m.appendTail(buf);
// println(buf);

}

public static void println(Object o) {
System.out.println(o);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值