本文主要描述Java正则表达式(Regular Expression),其作用是预先定义一个规则,然后,使用该规则匹配输入的字符串是否符合定义的规则,也可以从匹配的输出中提取字符串,正则表达式的常用使用场景包括字符串校验、提取字符串、规则引擎、语法规则。
正则定义
字符 ? x?????字符x \\????反斜杆 \xhh??十六进制值0xhh \t????tab键('\u0009') \n????换行符('\u000A') \r????回车键('\u000D') |
列举 [abc]???????字符a、b、c [^abc]????不包括a、b、c的字符 [a-zA-Z]??范围a到z、范围A到Z的字符 [a-d[m-p]]?????范围a到d、范围m到p的并集 [a-z&&[def]]?范围a到z与字符d、e、f的交集 [a-z&&[^bc]]?范围a到z不包括字符b、c [a-z&&[^m-p]]??范围a到z不包括字符范围m到p |
通用 .??????点号表示任意字符 \d????数字0到9,[0-9] \D???非数字0到9,[^0-9] \s????空格符 \S????非空格符,[^\s] \w???字,?[a-zA-Z_0-9] \W??非字,?[^\w] |
界限 ^?????行开始位置 $?????行结束位置 |
次数 X????X, ?出现0次、一次 X*????X, ?出现0次、多次 X+???X, ?出现一次、多次 X{n}?X, ?出现n次 X{n,} X,出现大于或等于n次 X{n,m} X,?出现大于或等于n次并且小于或等于m次 |
逻辑 XY???XY并排 X|Y??X或者Y (X)???X, ?分组 |
使用示例
? (([[a-zA-Z]+-?[a-zA-Z0-9]+]+)@([[a-zA-Z0-9]+\\.[a-zA-Z0-9]+]+)) 定义一个分组的正则表达式,其形式是((a)@(b)),使用正则匹配可以提取其中分组a、b对应的字符串 |