正则表达式语法
普通字符
字符 | 说明 |
---|---|
[ABC] | 匹配 […] 中的所有字符,例如 [aeiou] 匹配字符串 “google runoob taobao” 中所有的 e o u a 字母。 |
[^ABC] | 匹配除了 […] 中字符的所有字符,例如 [^aeiou] 匹配字符串 “google runoob taobao” 中除了 e o u a 字母的所有字母。 |
[A-Z] | [A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母。 |
. | 匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]。 |
[\s\S] | 匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,包括换行。 |
\w | 匹配字母、数字、下划线。等价于 [A-Za-z0-9_] |
非打印字符
特殊字符
限定符
* 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。
定位符
选择
用圆括号 ()将所有选择项括起来,相邻的选择项之间用 | 分隔。
() 表示捕获分组,() 会把每个分组里的匹配的值保存起来, 多个匹配值可以通过数字 n 来查看(n 是一个数字,表示第 n 个捕获组的内容)。
java实现
package testa;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Scanner;
public class regexttest {
public static void main(String args[]) {
Pattern pattern = Pattern.compile(
"^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]");
Scanner in = new Scanner(System.in);
String url = in.next();
Matcher matcher=pattern.matcher(url);
boolean re=matcher.matches();
System.out.println(re);
}
}