2011-09-21 52 views
3
Pattern p2 = Pattern.compile(".*"); 
Matcher m2 = p2.matcher("true"); 
System.out.println(m2.matches() + " [" + m2.group() + "]"); 

當我使用上面的代碼時,它是可以的。但我不明白當我使用這個regexpr [.]*時發生了什麼。它打印false在正則表達式模式下的點行爲

如何將點作爲特定符號?或者如何使用任何字符創建一類符號而沒有\ n和\ r?

回答

7

但我不明白當我使用這個regexpr [。] *時發生了什麼。它說我是假的。

因爲在character class中,點將失去其特殊含義並匹配一個普通的舊點(.字符)。

在字符類之外,點是一個元字符,可以匹配任何字符,不包括換行符(除非使用Pattern.DOTALL修飾符,當然)。

或者如何使用任何沒有\ n和\ r的字符創建一類符號。

使用否定的字符類:

Pattern p2 = Pattern.compile("[^\\r\n]*"); 

[^\r\n]意味着「匹配任何這一個\r\n

+0

插入符號在'[^ \\ r \ n]'中進行操作後的第一個反斜槓是什麼? – Geek

3

.*指任何字符0次或多次 [.]*意味着點字符0次或多次

2

[]是字符類,其中最內部代表它們的實際符號。在這種情況下,點只是一個點,而不是一個在正則表達式中有特殊意義的點。

+0

如何使它作爲一個特定的符號 – itun

+0

@itun - 什麼。你的意思是? – manojlds

+0

如何製作任何角色的課程? – itun