如果在所有可能的情况下如何捕获?

时间:2012-10-17 15:58:47

标签: java regex

我希望找到一个匹配单词if的所有组合的正则表达式。所以有效的是:

iF, IF , If and if

我在这里有一个正则表达式:[iIfF]*

虽然它匹配我想要的东西,但它也匹配单词Fi和其他类似的组合。

我犯了错误?

7 个答案:

答案 0 :(得分:6)

由于您似乎在使用Java,因此您需要:

Pattern p = Pattern.compile("if", Pattern.CASE_INSENSITIVE);

答案 1 :(得分:3)

[iI][fF]

括号中的所有内容都将被允许。

编辑 Java允许不区分大小写的RegEx

"(?i)if"

就足够了

答案 2 :(得分:3)

这将匹配iF, IF , If and if

[iI][fF]

答案 3 :(得分:2)

我怀疑你想要这样的东西:

Pattern pat = Pattern.compile("if", Pattern.CASE_INSENSITIVE);

这是使您的模式在Java中不区分大小写的常用方法。

答案 4 :(得分:2)

您可以使用(?i)标志使正则表达式不区分大小写:

String regex = "(?i)if";

答案 5 :(得分:1)

尝试使用:

/if/i

最后的i使得匹配不区分大小写。

抱歉 - 戴上了Perl帽子。您可以使用不区分大小写的模式:

Pattern p = Pattern.compile("if", Pattern.CASE_INSENSITIVE);

或更简洁:

Pattern p = Pattern.compile("(?i)if");

答案 6 :(得分:1)

我知道你要求正则表达式,但为什么不使用像equalsIgnoreCase(String)那样的

boolean b = yourString.equalsIgnoreCase("if");