正则表达式的构造摘要
来源:互联网 发布:caxa机械制图软件 编辑:程序博客网 时间:2024/05/17 23:02
正则表达式
Pattern:正则表达式编译形式
Matcher:模式匹配器
**@检查字符串格式(邮箱,电话号码等)**
检查字符串str2是否符合正则表达式str1
Pattern p=Pattern.compile(str1);
Matcher matcher=p.matcher(str2);
Boolean b= matcher. matcher();
或者:
boolean b = Pattern.matches("a*b", "aaaaab");
正则表达式的编译表示形式。
指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建Matcher
对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
因此,典型的调用顺序是
Pattern p = Pattern.compile
("a*b");
Matcher m = p.matcher
("aaaaab");
boolean b = m.matches
();
在仅使用一次正则表达式时,可以方便地通过此类定义 matches
方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句
boolean b = Pattern.matches("a*b", "aaaaab");
正则表达式的构造摘要
构造
匹配
字符
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 的控制符
字符类
[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,作为捕获组
思考题答案:
1:String path="src";
File file=new File(path);
System.out.println("========列出所有文件:==========");
File files[]=file.listFiles();
for(File f:files){
System.out.println(f);
}
System.out.println("========列出所有的.java文件========");
//利用匿名类来实现查找
Pattern p=Pattern.compile(".*[.java]");
Matcher matcher=p.matcher(filename);
boolean b= matcher. matches();
}
});
for(File ff:filess){
System.out.println(ff);
}
System.out.println("========列出所有的名称中带file的文件========");
File filesss[]=file.listFiles(new FileFilter(){
public boolean accept(File pathname) {
String filename=pathname.getName();
Pattern p=Pattern.compile(".*[f|F][i|I][l|L][e|E].*");
Matcher matcher=p.matcher(filename);
boolean b= matcher. matches();
return b;
}
});
for(File fff:filesss){
System.out.println(fff);
}
- 正则表达式的构造摘要
- 正则表达式的构造摘要
- 正则表达式的构造摘要
- 正则表达式的构造摘要
- 正则表达式的构造摘要
- 正则表达式的构造摘要
- 正则表达式的构造摘要
- 正则表达式的构造摘要
- 正则表达式的构造摘要
- 正则表达式的构造摘要
- 【JAVA基础】正则表达式的构造摘要
- JAVA正则表达式构造摘要
- Java中的正则表达式构造摘要
- 正则表达式常用方法和构造摘要
- Java正则表达式基础<二>---Java正则表达式的构造摘要
- java.util.regex包中类Pattern 正则表达式的构造摘要(一)
- java.util.regex包中类Pattern 正则表达式的构造摘要(二)
- Script中使用的正则表达式摘要
- Kettle java调用
- “真正”的程序员
- USB摄像头采集图像(DirectShow)
- Winrar4.11免费破解版(破解方法/激活码)
- Centos环境下MySQL-python安装过程
- 正则表达式的构造摘要
- Android学习笔记3--“Android SDK Content loader has encountered a problem” “parseSdkContent Failed ”
- 递归算法学习———汉诺塔
- BPMN2新规范与Activiti5 (Activiti5的特性介绍)
- BigDecimal类
- 关于论坛建设问题
- GridControl详解(四)分组排序汇总
- 安装完mysql-python后import加载模块 ImportError: libmysqlclient_r.so.16
- PHP UTF-8和Unicode编号互转