Java-017正则表达式
本帖最后由 moc 于 2018-12-23 22:42 编辑1、简介
正则表达式:指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串, 其实就是一种规则。
① 正则表达式定义了字符串的模式。
② 正则表达式可以用来搜索、编辑或处理文本。
③ 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
主要使用的类:String、Pattern、Matcher.
2、常见规则
1. 字符
x 字符 x。举例:'a'表示字符a
\\ 反斜线字符。
\n 新行(换行)符
\r 回车符
2. 字符类
a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
a到 z 或 A到 Z,两头的字母包括在内(范围)
0到9的字符都包括
3. 预定义字符类
. 任何字符。我的就是.字符本身,怎么表示呢? \.
\d 数字:
\w 单词字符:
4. 边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
5. Greedy 数量词
X? 一次或一次也没有
X* 零次或多次
X+ 一次或多次
X{n} 恰好 n 次
X{n,} 至少 n 次
X{n,m} 至少 n 次,但是不超过 m 次
3、典型应用
1. 判断功能
String ==> public boolean matches(String regex)
如果正则表达式的语法无效----抛出PatternSyntaxException 异常。
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的QQ号码:");
String qq = sc.nextLine();
System.out.println("checkQQ:" + qq.matches("\\d{4,14}"));2. 分割功能
String==>public String[] split(String regex)
// 以,分割
String s1 = "aa,bb,cc";
String[] str1Array = s1.split(",");
// 以.分割
String s2 = "aa.bb.cc";
String[] str2Array = s2.split("\\.");
// 以空格分割
String s3 = "aa bb cc";
String[] str3Array = s3.split(" +");
for (int x = 0; x < str3Array.length; x++) {
System.out.println(str3Array);
}3. 替换功能
String==>public String replaceAll(String regex,String replacement)
String s = "helloqq12345worldkh622112345678java";
// 直接把数字干掉
String regex = "\\d+";
String ss = "";
String result = s.replaceAll(regex, ss);
System.out.println(result);4. 获取功能
Pattern类 --> 正则表达式的编译表示形式。
Matcher类--> 通过解释 Pattern 对 character sequence 执行匹配操作的引擎。
典型的调用顺序:
// 把规则编译成模式对象
Pattern p = Pattern.compile("a*b");
// 通过模式对象得到匹配器对象
Matcher m = p.matcher("aaaaab");
// 调用匹配器对象的功能
boolean b = m.matches();
查找字符串中所有符合要求的子串:
find ==>public boolean find()
group ==>public String group()
String s = "da jia ting wo shuo,jin tian yao xia yu?";
String regex = "\\b\\w{3}\\b";
// 把规则编译成模式对象
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group());
} {:10_324:}
页:
[1]