常见的正则表达式规则

mac2025-11-03  35

常见的正则表达式规则

* 在其他语言中,\\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。 * 在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。 * java的\\代表其他语言的一个\ * \ 将下一个字符标记为特殊字符、文本、反向引用或八进制转义符。 \n 换行 * “$”和“^”分别是java正则表达式的终止和起始符,因此如果要匹配这两个字符不应将其直接写入正则表达式,而应该使用“//$”和“//^” * . 任何字符 * ^ 匹配字符串开始位置,如果设置了 RegExp 对象的 Multiline 属性,^ 还会与"\n""\r"之前的位置匹配。 * $ 匹配字符串结束位置,如果设置了 RegExp 对象的 Multiline 属性,$ 还会与"\n""\r"之前的位置匹配。 * * 0次或多次匹配前面的字符或子表达式 * + 1次或多次匹配前面的字符或子表达式 * ? 0次或1次匹配前面的字符或子表达式 * {n} n是非负整数。正好 匹配n次 * {n,} n是非负整数,至少匹配n次 * {n,m} m和n是负整数, n < m 至少匹配n次, 最多匹配m次 * x|y 匹配 x 或 y。例如,'z|food' 匹配"z""food"'(z|f)ood' 匹配"zood""food"* [xyz] 字符集。匹配包含任一字符 * [^xyz] 反向字符集 * [a-z] 字符范围 * [^a-z] 反向字符范围 * \b 匹配一个字边界,即字与空格间的位置。例如,"er\b"匹配"never"中的"er",但不匹配"verb"中的"er"* \B 非字边界匹配。"er\B"匹配"verb"中的"er",但不匹配"never"中的"er"* \d 数字字符匹配。等效于 [0-9]* \D 非数字字符匹配。等效于 [^0-9]* \f 换页符匹配。等效于 \x0c 和 \cL。 * \n 换行符匹配。等效于 \x0a 和 \cJ。 * \r 匹配一个回车符。等效于 \x0d 和 \cM * \s 匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效 * \S 匹配任何非空白字符。与 [^ \f\n\r\t\v] 等效 * \t 制表符匹配。与 \x09 和 \cI 等效。 * \v 垂直制表符匹配。与 \x0b 和 \cK 等效。 * \w 匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效。 * \W 与任何非单词字符匹配。与"[^A-Za-z0-9_]"等效 public class Regex { public static void main(String[] args) { // demo1(); // demo2(); // demo3(); // demo4(); // demo5(); // demo6(); // demo7(); // demo8(); // demo9(); // demo10(); // demo11(); // demo12(); // demo13(); // demo14(); // demo15(); } private static void demo15() { /* * [abc]{5,15} 匹配次数在5-15次, 并且字符串的字符范围在abc范围内 */ String regex = "[abc]{5,15}"; System.out.println("abcba".matches(regex)); //true System.out.println("abcbaabcabbabab".matches(regex)); //true System.out.println("abcb".matches(regex)); //false System.out.println("abcbaabaabcbaaba".matches(regex)); //false System.out.println("abcabceab".matches(regex)); //false } private static void demo14() { /* * [abc]{5,} 至少匹配5次,并且字符串的字符必须在abc范围内 */ String regex = "[abc]{5,}"; System.out.println("abcba".matches(regex)); //true System.out.println("abcbaabcabbabab".matches(regex)); //true System.out.println("abcb".matches(regex)); //false System.out.println("abcbaaba".matches(regex)); //true System.out.println("ababaece".matches(regex)); //false } private static void demo13() { /* * [abc]{5} 恰好匹配5次,并且字符串的字符范围是abc */ String regex = "[abc]{5}"; //true System.out.println("abcba".matches(regex)); //false System.out.println("abcbaabcabbabab".matches(regex)); //true System.out.println("abcb".matches(regex)); //false System.out.println("abcbe".matches(regex)); //false System.out.println("abcbaaba".matches(regex)); //false } private static void demo12() { /* * [abc]+ 匹配abc任意一个或多个的字符或字符串 */ String regex = "[abc]+"; System.out.println("".matches(regex)); //false System.out.println("a".matches(regex)); //true System.out.println("aaaaabbbbccccc".matches(regex));//true } private static void demo11() { /* * [abc]* 匹配abc任意一个或多个的字符串 和 空字符 */ String regex = "[abc]*"; System.out.println("".matches(regex)); //true System.out.println("abc".matches(regex)); //true System.out.println("a".matches(regex)); //true } private static void demo10() { /* * [abc]? 0次或1次 匹配abc任一一个字符的字符 和 空字符 返回true */ String regex = "[abc]?"; System.out.println("a".matches(regex)); //true System.out.println("b".matches(regex)); //true System.out.println("c".matches(regex)); //true System.out.println("d".matches(regex)); //false System.out.println("".matches(regex)); //true } private static void demo9() { /* * \\w 匹配任何单词(大小写)、数字、下划线 [a-zA-Z0-9_] * \\W 与任何非单词字符匹配。与"[^A-Za-z0-9_]"等效 */ String regex = "\\w"; System.out.println("a".matches(regex)); //true System.out.println("z".matches(regex)); //true System.out.println("_".matches(regex)); //true System.out.println("*".matches(regex)); //false } private static void demo8() { /* * \\s 匹配任一一个空格/tab * \\S 不匹配任一一个空格/tab */ String regex = "\\s"; System.out.println(" ".matches(regex)); //一个空格 true System.out.println(" ".matches(regex)); //一个tab键 true System.out.println(" ".matches(regex)); //两个空格 false System.out.println(" ".matches(regex)); //四个空格 false } private static void demo7() { /* * \\d \代表转义字符,如果想表示\d的话,需要\\d 匹配任一一个小写字母 * \\D 匹配任一一个大写字母 */ String regex = "\\d"; System.out.println("0".matches(regex)); //true System.out.println("a".matches(regex)); //false System.out.println("9".matches(regex)); //true System.out.println("23".matches(regex)); //false System.out.println("A".matches(regex)); //false } private static void demo6() { /* * 两个. 代表两个字符 */ String regex = ".."; System.out.println("a".matches(regex)); //false System.out.println("ab".matches(regex)); //true } private static void demo5() { /* * [a-z&&[^bc]] 取反再交 范围是a-z b、c除外 */ String regex = "[a-z&&[^bc]]"; System.out.println("a".matches(regex)); //true System.out.println("b".matches(regex)); //false System.out.println("2".matches(regex)); //false System.out.println("de".matches(regex)); //false } private static void demo4() { /* * [a-z&&[def]] 取交集后 范围是def */ String regex = "[a-z&&[def]]"; System.out.println("a".matches(regex)); //false System.out.println("d".matches(regex)); //true System.out.println("de".matches(regex)); //false } private static void demo3() { /* * [a-d[m-p]] 并范围 匹配这个范围的任意一个字符的字符(一个) true */ String regex = "[a-d[m-p]]"; System.out.println("a".matches(regex)); //true System.out.println("e".matches(regex)); //false System.out.println("m".matches(regex)); //true System.out.println("n".matches(regex)); //true System.out.println("ab".matches(regex)); //false } private static void demo2() { /* * [a-zA-Z] 字符范围 匹配这个范围的任意一个字符的字符(一个) true */ String regex = "[a-zA-Z]"; System.out.println("a".matches(regex)); //true System.out.println("A".matches(regex)); //true System.out.println("z".matches(regex)); //true System.out.println("Z".matches(regex)); //true System.out.println("2".matches(regex)); //false System.out.println("*".matches(regex)); //false System.out.println("ab".matches(regex)); //false } private static void demo1() { /* * [abc] 字符集 匹配任一字符 就返回ture 代表一个字符,匹配多个返回false * [^abc] 反字符集, 匹配任一字符 就返回false */ String regex = "[abc]"; System.out.println("a".matches(regex)); //true System.out.println("b".matches(regex)); //true System.out.println("c".matches(regex)); //true System.out.println("d".matches(regex)); //false System.out.println("2".matches(regex)); //false System.out.println("*".matches(regex)); //false System.out.println("ab".matches(regex)); //false System.out.println("----------------------------"); String regex2 = "[^abc]"; System.out.println("a".matches(regex2)); //false System.out.println("b".matches(regex2)); //false System.out.println("c".matches(regex2)); //false System.out.println("d".matches(regex2)); //true System.out.println("2".matches(regex2)); //true System.out.println("*".matches(regex2)); //true System.out.println("10".matches(regex2)); //false System.out.println("ab".matches(regex2)); //false } }
最新回复(0)