正则表达式使用目标是操作字符串。
语法规则:
[abc]
: a, b, c 中任意一个字符;
[^abc]
: 除a,b,c 外的任意一个字符;
[a-zA-Z]
: 从 a 到 z,A 到 Z 中的任意一个字符;
[a-d[m-p]]
: a-d 与 m-p 的并集;
[a-d&&[def]]
: a-d 与 def 的交集;
\s
,空白;\S
, 非空白;\d
, \D
数字和非数字;\w
, \W
单词字符(字母数字下划线)和非单词字符;
Greedy 数量限制:
X?
:X 字符出现一次或零次;
X*
: 零次或多次;
X+
:一次或多次;
X{n}, X{n,}, X{n,m}
: 分别为恰好 n,大于等于 n,n 到 m 次,注意不要加入空格;
Java 中如 split,replace 等函数都可以使用 regex;
正则表达式的分组功能
使用括号分隔一串正则表达式,以左括号确认组数。
如 ((A)(B(C)))
中,((A)(B(C)))
, (A)
, (B(C))
, (C)
分别为组 1,2,3,4;组 0 始终代表整个表达式;
简单使用实例":
String s = "我我我我在在在在学学习习习习";
s.replaceAll("(.)\\1+", "$1");
之后结果 s 是 “我在学习”; \\1
代表第一组,$1
代表第一组的内容;
Java 中正则表达式相关 Pattern 和 Matcher
Pattern p = Pattern.compile("regex_pattern");
Matcher m = p.metcher("str_to_match");
boolean flag = m.find();
// find() 函数查找后可通过 group() 函数获取匹配到的字符串(匹配字符串中的一部分);