jdk是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。下面小编为大家整理了关于JDK的正则表达,一起来看看吧:
一、概述
正则表达式是Java处理字符串、文本的重要工具。
Java对正则表达式的处理集中在以下两个两个类:
her 模式类:用来表示一个编译过的正则表达式。
ern 匹配类:用模式匹配一个字符串所表达的抽象结果。
(新版的Java Doc有解释。)
比如一个简单例子:
Java代码
import her;
import ern;
public class RegxOperator {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Pattern p = ile("f(.+?)k");
Matcher m = her("fckfkkfkf");
while (()) {
String s0 = p();
String s1 = p(1);
tln(s0 + "||" + s1);
}
tln("---------");
t("fucking!");
while (()) {
tln(p());
}
Pattern p1 = ile("f(.+?)i(.+?)h");
Matcher m1 = her("finishabigfishfrish");
while (()) {
String s0 = p();
String s1 = p(1);
String s2 = p(2);
tln(s0 + "||" + s1 + "||" + s2);
}
tln("---------");
Pattern p3 = Pattern
ile("(19|20)dd([- /.])(0[1-9]|1[012])2(0[1-9]|[12][0-9]|3[01])");
Matcher m3 = p3
her("1900-01-01 2007/08/13 1900.01.01 1900 01 01 1900-01.01 1900 13 01 1900 02 31");
while (()) {
tln(p());
}
}
}
输出结果:
fck||c
fkk||k
---------
fuck
finish||in||s
fishfrish||ishfr||s
---------
1900-01-01
2007/08/13
1900.01.01
1900 01 01
1900 02 31
Java代码
import her;
import ern;
public class Test {
public static void main(String args[]) {
String rawDate = "1900-01-01 2007/08/13 1900.01.01 1900 01 01 1900-01.01 1900 13 01 1900 02 31";
String patternStr = "(d{4})[- /.](d{2})[- /.](d{2})";
Pattern pattern = ile(patternStr);
Matcher matcher = her(rawDate);
while(()){
tln("full date is " + p());
tln("year is " + p(1));
tln("month is " + p(2));
tln("date is " + p(3));
}
}
}
full date is 1900-01-01
year is 1900
month is 01
date is 01
full date is 2007/08/13
year is 2007
month is 08
date is 13
full date is 1900.01.01
year is 1900
month is 01
date is 01
full date is 1900 01 01
year is 1900
month is 01
date is 01
full date is 1900-01.01
year is 1900
month is 01
date is 01
full date is 1900 13 01
year is 1900
month is 13
date is 01
full date is 1900 02 31
year is 1900
month is 02
date is 31
二、一些容易迷糊的问题
1、Java对反斜线处理的问题
在其他语言中,表示要插入一个字符;
在Java语言中,表示要插入正则表达式的反斜线,并且后面的字符有特殊意义。
看API文档:
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
d 数字:[0-9]
D 非数字: [^0-9]
s 空白字符:[ tnx0Bfr]
S 非空白字符:[^s]
w 单词字符:[a-zA-Z_0-9]
W 非单词字符:[^w]
但是看看上面程序,对比下不难看出:
d在实际使用的时候就写成了 d;
在Java正则表达式中,如果要插入一个字符,则需要在正则表达式中写成\,原因是下面的APIDoc定义表示一个反斜线。
但是如果在正则表示式中表示回车换行等,则不需要多添加反斜线了。比如回车r就写作r.
字符
x 字符 x
反斜线字符