一,引用正则表达式的匹配组 使用 $N 方式, N是0-9的数字, 其中$0代表整个匹配的字符串; 如:
System.out.println("1234".replaceAll("(\\d)(\\d)(\\d)(\\d)", "$0\r\n$1\r\n$2\r\n$3\r\n$4\r\n"));
输出 :
1234
1
2
3
4
二, 正则表达式的断言
- 左肯定断言 (?<=exp)
- 左否定断言 (?<!exp)
- 右肯定断言 (?=exp)
- 右否定断言 (?!exp)
public static void match() {
//左肯定断言 (?<=exp) "<"符号指向左边 "=" 有肯定的意思 ****注意要用在左边
System.out.println(Pattern.compile("(?<=ab)cd").matcher("abcd").find());//cd之左一定要存在ab 结果=true
System.out.println(Pattern.compile("(?<=ab)cd").matcher("efcd").find());//cd之左一定要存在ab 结果=false
//左否定断言 "<"符号指向左边 "!" 有否定的意思 ***注意要用在左边
System.out.println(Pattern.compile("(?<!ab)cd").matcher("abcd").find());//cd之左一定不要存在ab 结果=false
System.out.println(Pattern.compile("(?<!ab)cd").matcher("efcd").find());//cd之左一定不要存在ab 结果=true
//右肯定断言 "=" 有肯定的意思 ***注意要用在右边
System.out.println(Pattern.compile("cd(?=ef)").matcher("cdef").find());//cd之右一定不要存在ef 结果=true
System.out.println(Pattern.compile("cd(?=ef)").matcher("cdab").find());//cd之右一定不要存在ef 结果=false
//右否定断言 "!" 有否定的意思 ***注意要用在右边
System.out.println(Pattern.compile("cd(?!ef)").matcher("cdef").find());//cd之右一定不要存在ef 结果=false
System.out.println(Pattern.compile("cd(?!ef)").matcher("cdab").find());//cd之右一定不要存在ef 结果=true
}
三, 集合中的hash (HashSet, HashTable, HashMap)
使用这些集合时, 要确保里面 的对象重写了 hashCode 和 equals方法, 否则和我想当然的认为不一致.