正则表达式用来描述特定的字符串模式。
1. 在正则表达式中,有些字符具有特殊的含义:
特殊含义字符 | 含义 |
---|---|
. | 任意一个字符 |
[abc] | 表示a、b或c中的任意一个字符 |
[^abc] | 表示a、b或c以外的任意一个字符 |
[a-zA-Z] | 表示介于a到z或A到Z中的任意一个字符 |
\s | 表示空白符(空格、tab、换行、换页、回车) |
\S | 表示非空白符 |
\d | 表示任意一个数字[0-9] |
\D | 表示任意一个非数字[^0-9] |
\w | 表示词字符,[a-zA-Z_0-9] |
\W | 表示非词字符 |
2. 在正则表达式中,有些特殊字符表示字符出现的次数:
表示次数的字符 | 含义 |
---|---|
* | 表示0次或多次 |
+ | 表示1次或多次 |
? | 表示0次或1次 |
{n} | 恰好n次 |
{n,m} | 至少n次,至多m次 |
3. 正则表达式例子:
public class RegularExpressionTest {
public static void main(String[] args) {
// 把所有aaa替换成z ----》zbzcz
System.out.println("aaabaaacaaa".replaceAll("a{3}", "z"));
// 把a、aa、aaa替换成*----》*b*c*
System.out.println("aaabaaca".replaceAll("a{1,3}", "\\*"));
// 把数字替换成z----》zzzazzbzzcc
System.out.println("123a44b35cc".replaceAll("\\d", "z"));
// 把非数字替换成0----》12304403500
System.out.println("123a44b35cc".replaceAll("\\D", "0"));
// 把.替换成\----》www\baidu\com
System.out.println("www.baidu.com".replaceAll("\\.", "\\\\"));
// 把以a开头和以b结尾的三个字符串替换成-----》-hello-all
System.out.println("azbhelloahball".replaceAll("a.b", "-"));
// 把所有的词字符替换成#----》#.#.#.#.#.#.#.#.#.#
System.out.println("a.b.c.A.B.C.1.2.3.4".replaceAll("\\w", "#"));
}
}
注意:由于“.”,”*”等在正则表达式中具有特殊含义,如果要用字面上的这些字符,必须以“\\”开头。
反斜杠问题请参考这篇文章