2012-04-16 54 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

要更好地控制区分大小写,您可能需要执行自己的大小写折叠或整理。