2012-04-16 57 views
4

我在文檔中找不到這個。我需要啓用大小寫不敏感,但只在特殊情況下。Pattern.compile沒有標誌?

如何以等同於Pattern.compile(String regex)的方式調用方法Pattern.compile(String regex, int flags)?我可以使用Pattern.compile("my regex", 0)嗎?

回答

7

是 - Pattern.compile(foo)最後只是返回Pattern.compile(foo, 0)

這將是很好,如果文檔居然說,但是這就是我剛纔看了一下確實實施...

2

code for Pattern.compile(String regex)是(線1021及以下):

public static Pattern compile(String regex) { 
    return new Pattern(regex, 0); 
} 

和代碼Pattern.compile(String regex, int flags)是:

public static Pattern compile(String regex, int flags) { 
    return new Pattern(regex, flags); 
} 

所以是的。

+0

請不要發佈嚴重阻礙的代碼。我們有些人可能希望有一天參加潔淨室的工作。 – 2012-04-16 17:47:11

+0

@MikeSamuel不知道我明白你的意思:「嚴重密碼」。 – assylias 2012-04-16 17:54:22

+0

該代碼是在[許可證](http://www.oracle.com/technetwork/java/scsl-1-1-149938.txt)下發布的,該許可證的限制比大多數操作系統許可證明顯更多。 – 2012-04-16 18:31:16

5

我可以只使用Pattern.compile("my regex", 0)嗎?

是的。所述javadoc

標誌 - 匹配標誌,比特掩碼可以包括CASE_INSENSITIVE,MULTILINE,DOTALL,UNICODE_CASE,CANON_EQ,UNIX_LINES,直譯,UNICODE_CHARACTER_CLASS和評論

0是不含有位掩碼。


我需要啓用不區分大小寫,但只有在特殊情況下。

case-sensitivity有幾種不同的Pattern

要更好地控制區分大小寫,您可能需要執行自己的大小寫摺疊或整理。