这里对正则表达示进行一定程度的总结.为避免太过纠结,这里避开一些 鸡肋 的正则用法.
更多文档参考官方文档 http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
字符
x 字符 x
\\ 反斜线字符
\t 制表符 (‘\u0009‘)
\n 新行(换行)符 (‘\u000A‘)
\r 回车符 (‘\u000D‘)
\f 换页符 (‘\u000C‘)
\a 报警 (bell) 符 (‘\u0007‘)
\e 转义符 (‘\u001B‘)
字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
/*注:在Java 里表有些特殊的定义,参考API*/
Greedy 数量词 (贪婪)
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
Reluctant 数量词 (非贪婪)
X?? X,一次或一次也没有
X*? X,零次或多次
X+? X,一次或多次
X{n}? X,恰好 n 次
X{n,}? X,至少 n 次
X{n,m}? X,至少 n 次,但是不超过 m 次
/*注:Possessive 这里不细说,参考API*/
Logical 运算符
XY X 后跟 Y
X|Y X 或 Y
(X) X,作为捕获组
Java 代码
public class Test2 { public static void match(String patternStr, String string) { Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(string); if (matcher.find()) { // matcher.group() == matcher.group(0) 代表整个表达示 for (int i = 0, j = matcher.groupCount(); i <= j; i++) { System.out.println(matcher.group(i)); } } } /** * @param args */ public static void main(String[] args) { // 字符串区配 Pattern.matches("\\w", "abcd"); // 字符串替换 "abcdefg".replaceAll("^[\\w]{2}", "aaaa"); // 字符串筛选 String str = "abcde123fgabcd"; match("(\\w+)(\\d+)", str); } }
Oracle相关
--Oracle使用正则表达式的4个函数 --regexp_like(source_char,pattern,[match_parameter]) --与LIKE运算符相似,支持使用与此正则表达式与文本进行匹配 --regexp_substr(source_char,pattern,position,[occurrence],[match_parameter]) --为指定字符串的一部分与正则表达式建立匹配 --regexp_instr(source_char,pattern,position,[occurrence],[teturn_option],[match_parameter]) --返回与正则表达式匹配的字符和字符串的位置 --regexp_replace(source_char,pattern,replace_string,position,[occurrence],[match_parameter]) --提供一种修改与所给正则表达式匹配的字符串的方法 --参数说明 --source_char,输入的字符串,可以是列名或者字符串常量、变量。 --pattern,正则表达式。 --match_parameter,匹配选项.取值范围: i:大小写不敏感; c:大小写敏感;n:点号 . 不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。 --position,标识从第几个字符开始正则表达式匹配。 --occurrence,标识第几个匹配组。 --replace_string,替换的字符串。
原文:http://my.oschina.net/zhouxiang/blog/350595