正则表达式简介
实际开发中,经常需要对字符串数据进行一-些复 杂的匹配、查找、替换等操作。通过“正则表达式"
可以方便的实现字符串的复杂操作。
正则表达式是一串特定字符,组成一个"规则字符串”这个"规则字符串”是描述文本规则的工具。正则表达式就是记录文本规则的代码。
例如:
-正则表达式: "[a-Z]" 表示a到z的任意一个字符。
-正则表达式:"[a-z]+" 表示由1个或多个a-z字符组成的字符串。
一、字符集合
/**测试正则表达式:字符集合*/
public void testRegEx3() {
String regex1 = "[a-z]";
String regex2 = "[^a-z]";
String regex3 = "[a-z&&[^bc]";
String regex4 = "\d";// [0-9]
String regex5 = "\D";// [^0-9]
String regex6 = "\s";// [
x0Bf
]
String regex7 = "\S ";// [^s]
String regex8 = "\w";// [a-zA-Z_ _0-9]
String regex9 = "\W";// [^w]
/**测试正则表达式:字符集合*/
System.out.println("a" .matches(regex1));// true
System.out.println("b".matches(regex2));// false
System.out.println("f".matches(regex3));// true
System.out.println("b".matches(regex3));// false
System.out.println(" 1" .matches(regex4));// true
System.out.println("1".matches(regex5));// false
System.out.println("".matches(regex6));// true
System.out.println("".matches(regex7));// false
System.out.println("_".matches(regex8));// true
System.out.println("_" .matches(regex9));// false
}
二、预定义字符集
三、数量词
/** *测试正则表达式:"*"、"+"、"?" */
public void testRegEx1() {
String regex1 = "[a-z]*";
String regex2 = "\w+\.jar";
String regex3 = "\d?[a-z]*";
System.out.println("abcde ".matches(regex1)); // true
System.out.println("".matches(regex1)); // true
System.out.println("lang.jar".matches(regex2)); // true
System.out.println("jar".matches(regex2)); // false
System.out.println("1abc".matches(regex3)); // true
System.out.println("123abc".matches(regex3)); //false
System.out.println("abc".matches(regex3)); // true
}
/** 测试正则表达式: "{n}"、 "{n,}"、 "{n,m} “*/
public void testRegEx2() {
String regex1 = "\w{5}";
String regex2 = "\d{5,}";
String regex3 = "[a-zA-Z]{5,8}";
System.out.println("abcef".matches(regex1));// true
System.out.println("abcefg".matches(regex1));// false
System.out.println("12345".matches(regex2));// true
System.out.println("123456".matches(regex2)); // true
System.out.println("1234".matches(regex2));// false
System.out.println("Hello".matches(regex3));// true
System.out.println("HelloWorld".matches(regex3)); // false
}
四、分组"()"
五、"^" 和 "$"
拓展
? 问号表示
如果前面是单个字符,则表示0或1个,即有有或没有
如果前面是连续匹配的多个字符,则表示匹配到的个数尽可能
举例
<.+> 和 <.+?>
含义解析: .+表示任何字符,个数上是 >=1,加上?表示个数尽可能的少。.+?表示最小匹配
<a href="xxx"><span>
如果用<.+>匹配,则匹配结果是:<a href="xxx"><span>
如果用<.+?>匹配,则匹配结果是:<a href="xxx">
也就是.+?只要匹配就返回了,不会再接着往下找了