糯米文學吧

位置:首頁 > IT認證 > SUN認證

JDK的正則表達

SUN認證2.36W

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

反斜線字符