------- android培训、java培训、期待与您交流! ---------
正则表达式:
正则表达式,又称正规表达式,常规表达式(Regular Expression)。它使用单个字符串里描述匹配一系列符合某个语法规则的字符串。
作用:用于专门字符串操作。
特点:用特定的符号还表示一些代码操作,简化书写。
好处:简化对字符串的操作。
正则表达式由两种字符构成。一种是在正则表达式中具体特殊意义的“元字符”,另一种是普通的“文本字符”。
元字符可以是一个字符,如“^”,也可以是一个字符序列,如“\w”。
[ ] 可以匹配任意一个字符。
[^ ] 可以匹配不在这里出现的字符。
.匹配且仅匹配任意一个字符
\转义字符,消除字符的特殊含义,不会单独出现
{}表示字符出现的次数{1}表示只出现1次,{1,3}表示出现1-2次
()组。从的一组开始,//1表示调用的一组。
$表示在其他地方调用组
数量:
Greedy 数量词 | |
---|---|
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
字符:
字符 | |
---|---|
x | 字符 x |
\\ | 反斜线字符 |
\0n | 带有八进制值 0 的字符 n (0 <= n <= 7) |
\0nn | 带有八进制值 0 的字符 nn (0 <= n <= 7) |
\0mnn | 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7) |
\xhh | 带有十六进制值 0x 的字符 hh |
\uhhhh | 带有十六进制值 0x 的字符 hhhh |
\t | 制表符 ('\u0009') |
\n | 新行(换行)符 ('\u000A') |
\r | 回车符 ('\u000D') |
\f | 换页符 ('\u000C') |
\a | 报警 (bell) 符 ('\u0007') |
\e | 转义符 ('\u001B') |
\cx | 对应于 x 的控制符 |
字符 | |
---|---|
x | 字符 x |
\\ | 反斜线字符 |
\0n | 带有八进制值 0 的字符 n (0 <= n <= 7) |
\0nn | 带有八进制值 0 的字符 nn (0 <= n <= 7) |
\0mnn | 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7) |
\xhh | 带有十六进制值 0x 的字符 hh |
\uhhhh | 带有十六进制值 0x 的字符 hhhh |
\t | 制表符 ('\u0009') |
\n | 新行(换行)符 ('\u000A') |
\r | 回车符 ('\u000D') |
\f | 换页符 ('\u000C') |
\a | 报警 (bell) 符 ('\u0007') |
\e | 转义符 ('\u001B') |
\cx | 对应于 x 的控制符 |
预定义字符类 | |
---|---|
. | 任何字符(与行结束符可能匹配也可能不匹配) |
\d | 数字:[0-9] |
\D | 非数字: [^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
具体操作
1:匹配
public boolean matches(String regex)
- 告知此字符串是否匹配给定的 正则表达式。
例:
package com.itheima;
public class RegexTest2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String mail = "710838967@qq.com";
String regex = "\\w+@\\w+(\\.[a-zA-Z]+)+";
System.out.println(mail.matches(regex));
}
}
2:替换
public String replaceAll(String regex, String replacement)
- 使用给定的 replacement 替换此字符串所有匹配给定的 正则表达式的子字符串。
例:
package com.itheima;
public class RegexTest2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String mail = "710838967@qq.com";
String regex = "\\w+";
System.out.println(mail.replaceAll(regex, "#"));
}
}
3:切割
package com.itheima;
public class RegexTest2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String mail = "710838967@qq.com";
String regex = "(.)\\1";
String[] str = mail.split(regex);
for (String string : str) {
System.out.println(string);
}
}
}
4:获取
操作步骤:
1.将正则表达式分装成对象。
2.让正则对象和要操作的字符串串联。
3.关联后,获取匹配引擎。
4.获取。
例:
package com.itheima;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest2 {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
String line = "http://10.2.3.77/docs/index.html";
String regex = "[a-zA-Z]{1,10}";
//将正则表达式分装成对象。
Pattern p = Pattern.compile(regex);
//让正则对象和要操作的字符串串联。关联后,获取匹配引擎。
Matcher m = p.matcher(line);
//获取。
while (m.find()) {
System.out.println(m.group());
}
}
}