一、正则表达式---Pattern class
在java中正则表达式所对应的类是pattern class,所在的包是Regex。
本质上使用与指定匹配或者筛选规则的一系列表达式。
每个字符在匹配的时候只能跟一个数量词。---用于筛选
a、b或c。[]括号中的字母可以按照自己的使用要求任意改换。
2.[a-zA-Z]
a到z或A到Z,两头的字母包含在内。[]括号中的内容可以按照自己的使用要求任意替换成一段连续的字符。
3.[^abc]
任何字符,除了a、b或c。[]括号中的字母可以按照自己的使用要求任意改换。
4.[\s\S]
匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。
5.\w
匹配字母、数字、下划线。等价于 [A-Za-z0-9_]
1.2 通配符/预定义字符类
2. \\. 表示匹配点。
3. \\\\ 匹配反斜杠。
4. \\d 表示所有数字。
5. \\D 表示非数字。
6. \\s 表示空白符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
7. \\S 表示非空白,等价于 [^ \f\n\r\t\v]。
8. \\w 表示单词字符。
9. \\W 非单词字符。
1.3 数量词
2. ? 表示至多出现一次。<=1。
3. * 表示可有可无,有的话不限制次数。>=0。
4. {n} 表示有n个字符组成。==n。
5. {n,} 至少有n个组成。>=n。
6. {n,m} 数量在n到m之间。
7. 注意
- 每个字符至多只能跟一个数量词。
- 在[]内一切数量词失效。
练习:
输入一个字符串,判断这个字符串是否是一个小数。
长度8-12位,至少由字母数字空格至少有两种组成。
1.4 捕获组
2. \\n 表示引用之前对应编号为n的捕获组。
匹配邮箱(典型练习)
1.5 特殊字符
所谓特殊字符,就是一些有特殊含义的字符,若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符\ 放在它们前面。下表列出了正则表达式中的特殊字符:
特别字符 | 描述 |
---|---|
$ | 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。 |
( ) | 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。 |
* | 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。 |
+ | 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。 |
. | 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。 |
[ | 标记一个中括号表达式的开始。要匹配 [,请使用 \[。 |
? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。 |
\ | 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。 |
^ | 匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。要匹配 ^ 字符本身,请使用 \^。 |
{ | 标记限定符表达式的开始。要匹配 {,请使用 \{。 |
| | 指明两项之间的一个选择。要匹配 |,请使用 \|。 |
2、包含正则的重要方法
2.1 matches(String regex); 是否匹配参数。
2.2 replaceAll(String regex,String replacement);
将一类东西替换。后一个参数想引用前一个参数的捕获组,改用$符。$这个符号,仅限于此方法使用。
统计每个字符出现的个数。
从控制台输入一个字符串,统计每个字符出现的次数。
我我我我我我爱爱爱爱学学学学学学学学学学学学编编编程程程程程程 -> 我爱学编程
2.3 replaceFirst(String regex,string newstr); 将字符串的首个reges替换为newstr。
以参数regex作为切割符将字符串分开,切完之后,作为切割符的字符就被切除掉了。如果两个切割符相连,这两个切割符之间会切出一个空字符串(“”);如果切割符在末尾,直接切除。如果在开头,会切出一个空字符串(“”)。