JAVA与正则表达式 博客分类: Java javapatternmatcher正则表达式regex
程序员文章站
2024-03-11 15:26:13
...
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); } }
上一篇: JAVA拆箱与装箱及cache范围 博客分类: Java Integer.valueOf()装箱拆箱valueOf缓存范围Character [0~127]
下一篇: 用PHP函数解决SQL injection 反斜杠 博客分类: PHPmysql PHPSQLinjection反斜杠addslashes
推荐阅读
-
JAVA拆箱与装箱及cache范围 博客分类: Java Integer.valueOf()装箱拆箱valueOf缓存范围Character [0~127]
-
JAVA与正则表达式 博客分类: Java javapatternmatcher正则表达式regex
-
[转]log4j详解与实战 博客分类: Java
-
[转]log4j详解与实战 博客分类: Java
-
Java内存区域与内存溢出异常 博客分类: Java编程 内存区域内存溢出
-
Java使用正则表达式(regex)匹配中文实例代码
-
冒泡排序算法实现与分析 博客分类: 数据结构与算法 算法java冒泡排序
-
StringUtils工具类的常用方法 博客分类: JAVA 正则表达式F#ApacheJDK
-
冒泡排序的两种实现方法(Java) 博客分类: 算法与数据结构 冒泡排序时间复杂度空间复杂度
-
StringUtils工具类的常用方法 博客分类: JAVA 正则表达式F#ApacheJDK