---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! -------------------------
匹配 |
|
字符 |
|
x |
字符 x |
\\ |
反斜线字符 |
\t |
制表符 ('\u0009') |
\n |
新行(换行)符 ('\u000A') |
\r |
回车符 ('\u000D') |
\f |
换页符 ('\u000C') |
\a |
报警 (bell) 符 ('\u0007') |
\e |
转义符 ('\u001B') |
字符类 |
|
[abc] |
a、b 或 c(简单类) |
[^abc] |
任何字符,除了 a、b 或 c(否定) |
[a-zA-Z] |
a 到 z 或 A 到 Z,两头的字母包括在内(范围) |
[a-d[m-p]] |
a 到 d 或 m 到 p:[a-dm-p](并集) |
[a-z&&[def]] |
d、e 或 f(交集) |
[a-z&&[^bc]] |
a 到 z,除了 b 和 c:[ad-z](减去) |
[a-z&&[^m-p]] |
a 到 z,而非 m 到 p:[a-lq-z](减去) |
预定义字符类 |
|
. |
任何字符(与行结束符可能匹配也可能不匹配) |
\d |
数字:[0-9] |
\D |
非数字: [^0-9] |
\s |
空白字符:[ \t\n\x0B\f\r] |
\S |
非空白字符:[^\s] |
\w |
单词字符:[a-zA-Z_0-9] |
\W |
非单词字符:[^\w] |
边界匹配器 |
|
^ |
行的开头 |
$ |
行的结尾 |
\b |
单词边界 |
\B |
非单词边界 |
\A |
输入的开头 |
\G |
上一个匹配的结尾 |
\Z |
输入的结尾,仅用于最后的结束符(如果有的话) |
\z |
输入的结尾 |
|
|
Greedy 数量词 |
|
X? |
X,一次或一次也没有 |
X* |
X,零次或多次 |
X+ |
X,一次或多次 |
X{n} |
X,恰好 n 次 |
X{n,} |
X,至少 n 次 |
X{n,m} |
X,至少 n 次,但是不超过 m 次 |
|
|
Reluctant 数量词 |
|
X?? |
X,一次或一次也没有 |
X*? |
X,零次或多次 |
X+? |
X,一次或多次 |
X{n}? |
X,恰好 n 次 |
X{n,}? |
X,至少 n 次 |
X{n,m}? |
X,至少 n 次,但是不超过 m 次 |
|
|
Possessive 数量词 |
|
X?+ |
X,一次或一次也没有 |
X*+ |
X,零次或多次 |
X++ |
X,一次或多次 |
X{n}+ |
X,恰好 n 次 |
X{n,}+ |
X,至少 n 次 |
X{n,m}+ |
X,至少 n 次,但是不超过 m 次 |
|
|
Logical 运算符 |
|
XY |
X 后跟 Y |
X|Y |
X 或 Y |
(X) |
X,作为捕获组 |
- //匹配手机号码是否正确。
- String str = "15158041079";
- boolean b = str.matches("1[358]\\d{9}");//1[358][0-9]{9}
- System.out.println(b);
2.1 根据一个或多个点来拆分字符串
- public static void main(String[] args) {
- String str = "zhangsan...lisi..wangwu";
- // 根据一个或多个点来拆分字符串
- String[] names = str.split("\\.+");
- for (String name : names) {
- System.out.println(name);
- }
- }
lisi
wangwu
- public static void main(String[] args) {
- String str = "zhangsan666lisitttwangwu";
- // "."代表任意字符,(.)把它封装为组,编号为1...n,调用它直接用编号,
- //1由于代 表的是正常的 1,用\1将它转义为组编号,由于是在字符串中,再用\\1来转义
- String[] names = str.split("(.)\\1+");
- for (String name : names) {
- System.out.println(name);
- }
- }
lisi
wangwu
- public static void main(String[] args) {
- String str = "zhangsanttttlisimmmwangwu";
- str = str.replaceAll("(.)\\1+", "$1");// $符号调用了前面参数中的第1组
- System.out.println(str);
- String tel = "15158041079";
- // 括号表示 组 被替换的部分 $n 表示 第n组的内容
- tel = tel.replaceAll("(\\d{4})\\d{3}(\\d{4})", "$1****$2");
- System.out.println(tel);// 1382****1111
- }
1382****1111
4、获取
- public static void main(String[] args) {
- String str = "da asdf sdf,sdkfh,sdk sdhh jtt!";
- String regex = "\\b[a-z]{3}\\b";
- // 1,将正则规则进行对象的封装
- Pattern p = Pattern.compile(regex);
- // 2, 通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配器对象Matcher 。
- Matcher m = p.matcher(str);
- // 使用Matcher对象的方法对字符串进行操作。
- // 既然要获取三个字母组成的单词
- // 查找 find();
- System.out.println(str);
- while (m.find()) {
- System.out.println(m.group());// 获取匹配的子序列
- }
- }
sdf
sdk
jtt
网页爬虫:
- /*
- * 网页爬虫:其实就一个程序用于在互联网中获取符合指定规则的数据。 爬取邮箱地址。
- */
- public static void main(String[] args) throws IOException {
- List<String> list = getMails();
- for (String mail : list) {
- System.out.println(mail);
- }
- }
- public static List<String> getMails() throws IOException {
- // 1,读取源文件。
- BufferedReader bufr = new BufferedReader(
- new FileReader("D:\\mail.html"));
- // 2,对读取的数据进行规则的匹配。从中获取符合规则的数据.
- String mail_regex = "\\w+@\\w+(\\.\\w+)+";
- List<String> list = new ArrayList<String>();
- Pattern p = Pattern.compile(mail_regex);
- String line = null;
- while ((line = bufr.readLine()) != null) {
- Matcher m = p.matcher(line);
- while (m.find()) {
- // 3,将符合规则的数据存储到集合中。
- list.add(m.group());
- }
- }
- bufr.close();
- return list;
-
}
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! -------------------------