當前位置:才華齋>IT認證>SUN認證>

JDK的正則表達

SUN認證 閱讀(2.39W)

jdk是 Java 語言的軟體開發工具包,主要用於移動裝置、嵌入式裝置上的java應用程式。下面小編為大家整理了關於JDK的正則表達,一起來看看吧:

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

反斜線字元