本篇内容介绍了“ 怎么使用正则表达式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
编程总在实践中出结果!
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
正则引擎主要可以分为两大类:一种是DFA,一种是NFA。这两种引擎都有了很久的历史(至今二十多年),当中也由这两种引擎产生了很多变体!于是POSIX的出台规避了不必要变体的继续产生。这样一来,主流的正则引擎又分为3类:一、DFA,二、传统型NFA,三、POSIX NFA。
正则也是一种非常有意思的技术,但往往不知道这些符号的编程在实际使用中该如何使用,因此总结了本篇文章,方便所有小伙伴可以当成一个工具文章使用,方便处理一些需要使用正则的技术内容。
"a".matches(".")
"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)]")
"a_8".matches("\\w{3}")
"\\".matches("\\\\")
"hello sir".matches("h.*")
"hello sir".matches(".*ir$")
"hello sir".matches("^h[a-z]{1,3}o\\b.*")
"hellosir".matches("^h[a-z]{1,3}o\\b.*")
" \n".matches("^[\\s&&[^\\n]]*\\n$")
^[\\s&&[^\\n]]
,且不能是换行符,最后必须是换行
\\n$
System.out.println("java".matches("(?i)JAVA"));
Pattern p = Pattern.compile("[a-z]{3,}");
Matcher m = p.matcher("fgha");
System.out.println(m.matches()); // true,匹配字符3次及以上
Pattern p = Pattern.compile("\\d{3,5}");
Matcher m = p.matcher("123-4536-89789-000");
System.out.println(m.matches());
m.reset();// 把吃进去的字符吐出来重新匹配,否经过m2.matches会吃进去字符 下面的匹配就不成功
System.out.println(m.find());
System.out.println(m.start() + "-" + m.end()); // 找到了 就把首位位置打印下(必须找到才能打印)
System.out.println(m.find());
System.out.println(m.start() + "-" + m.end()); // 找到了 就把首位位置打印下(必须找到才能打印)
System.out.println(m.find());
System.out.println(m.start() + "-" + m.end()); // 找到了 就把首位位置打印下(必须找到才能打印)
System.out.println(m.find());
System.out.println(m.lookingAt()); //每次都是才头上开始找
测试结果
false
true
0-3
true
4-8
true
9-14
true
true
Pattern p = Pattern.compile("java",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("java_Java_jAva_jAVa_IloveJava");
System.out.println(m.replaceAll("JAVA"));
Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("java_Java_jAva_jAVa_IloveJava fdasfas");
StringBuffer sb = new StringBuffer();
int i = 0;
while (m.find()) {
i++;
if (i % 2 == 0) {
m.appendReplacement(sb, "java");
} else {
m.appendReplacement(sb, "JAVA");
}
}
m.appendTail(sb);
System.out.println(sb);
i % 2
,进行单双数替换匹配 Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");
Matcher m = p.matcher("123bb_78987dd_090po");
while(m.find()){
System.out.println(m.group(1));
}
结果:
123
78987
090
Process finished with exit code 0
描述:分组加括号只取数字一组,grop括号里面第0组是整体,第一组是左起第一个括号,第二组是左起第二个括号
Pattern p = Pattern.compile("(.{3,10}?)[0-9]");
Matcher m = p.matcher("aaaa5dddd8");
while (m.find()) {
System.out.println(m.start() + "-" + m.end());
}
结果:
0-5
5-10
Process finished with exit code 0
描述:.{3,10}后面没问号就是贪婪匹配会配到最长,如果{3,10}?加?号就是懒蛋匹配之匹配最少的,从3个开始找。如果这里用if(m.find)(){m.start()+"-"+m.end()} 那么之匹配第一个
Pattern p = Pattern.compile(".{3}");
Matcher m = p.matcher("ab4dd5");
while(m.find()){
System.out.println(m.group());
}
结果:
ab4
5-10
Process finished with exit code 0
描述:每次匹配三个任意字符,用 m.group() 输出。
Pattern p = Pattern.compile(".{3}(?=a)");
Matcher m = p.matcher("ab4add5");
while (m.find()) {
System.out.println("后面不能是a的:" + m.group());
}
后面不能是a的:ab4
Pattern p = Pattern.compile("(?!a).{3}");
Matcher m = p.matcher("abbsab89");
while (m.find()) {
System.out.println("前面不能是a的:" + m.group());
}
Pattern p = Pattern.compile("(?!>).+(?=<)");
Matcher m = p.matcher(">小傅哥<");
while (m.find()) {
System.out.println(m.group());
}
Pattern p = Pattern.compile("(\\d\\d)\\1");
Matcher m = p.matcher("1212");
System.out.println(m.matches());
“ 怎么使用正则表达式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。