实用,就转载啦~
正则表达式是开发过程中的一把利器,利用它可以很轻松的匹配,查找,修正很多字符串。以下以java环境下讲解。
一、字符及字符串的表示法(有些是有许多表示法,但只以我的习惯为准)
字符类
[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](减去)
***以上在java中使用时用双引号将它们括起来就可以了
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9] (单个数字)
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
以上在java中使用时除了将它们用双引号括起来以为,还须加\转义,例如\d的实际用法是”\\d“
ession_r constructs, and what they match" border=0>
POSIX 字符类(仅 US-ASCII) | |
---|---|
\p{Lower} | 小写字母字符:[a-z] |
\p{Upper} | 大写字母字符:[A-Z] |
\p{ASCII} | 所有 ASCII:[\x00-\x7F] |
\p{Alpha} | 字母字符:[\p{Lower}\p{Upper}] |
\p{Digit} | 十进制数字:[0-9] |
\p{Alnum} | 字母数字字符:[\p{Alpha}\p{Digit}] |
\p{Punct} | 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ |
\p{Graph} | 可见字符:[\p{Alnum}\p{Punct}] |
\p{Print} | 可打印字符:[\p{Graph}\x20] |
\p{Blank} | 空格或制表符:[ \t] |
\p{Cntrl} | 控制字符:[\x00-\x1F\x7F] |
\p{XDigit} | 十六进制数字:[0-9a-fA-F] |
\p{Space} | 空白字符:[ \t\n\x0B\f\r] |
以上字符串要加双引号和反斜杠号
ession_r constructs, and what they match" border=0>
Greedy 数量词 | |
---|---|
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
用法也是将它们用双引号括起来
ession_r constructs, and what they match" border=0>
Logical 运算符 | |
---|---|
XY | X 后跟 Y |
X|Y | X 或 Y |
(X) | X,作为捕获组 |
用法也是将它们用双引号括起来
注意:正则表达式则有在方法参数明确是以正则表达式为参考时才使用,否则如果方法参数是普通字符序列时是不起作用的。
二、相关的API
1、String类
1-1、boolean contains(CharSequence s)
1-2、String replace(CharSequence target, CharSequence replacement)
1-3、String replaceAll(String regex, String replacement)
1-4、String[] split(String regex)
1-5、boolean startsWith(String prefix)
1-6、boolean endsWith(String suffix)
注意 以上2个函数参数是普通字符串
2、Pattern类
获取其实例
2-1、static Pattern compile(String regex)
2-2、String[] split(CharSequence input)
2-3、Matcher matcher(CharSequence input)
2-4、static boolean matches(String regex, CharSequence input)
3、Mathcer类
3-1、Pattern pattern()
3-2、boolean matches()
3-3、 Matcher usePattern(Pattern newPattern)
3-4、 boolean find()
3-5、Matcher appendReplacement(StringBuffer sb, String replacement)
3-6、StringBuffer appendTail(StringBuffer sb)
例子,将"abc03DW9"中的数字全部换为"A",可用以下代码得到
Pattern pattern=Pattern.compile(“\\d”);
Matcher matcher=pattern.matcher("abc03DW9");
boolean find;
StringBuffer sb=new StringBuffer();
while(find){
matcher.appendReplacement(sb,"A");
find=matcher.find();
}
matcher.appendTail(sb);
到此步已获结果
转自: http://wygk2169.blog.163.com/blog/static/4537949920101195639462/