java 正则表达式基础学习

正则表达式就是字符串的匹配查找的利器,在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

// email
"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));//整体是()
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值