2

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

iF, IF , If and if

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

尽管它与我想要的匹配,但它也匹配单词Fi和其他此类组合。

我在哪里犯错误?

4

7 回答 7

6

由于您似乎正在使用 Java,因此您希望:

Pattern p = Pattern.compile("if", Pattern.CASE_INSENSITIVE);
于 2012-10-17T16:02:59.617 回答
3
[iI][fF]

括号中的所有内容都可以任意组合。

EDIT Java 允许不区分大小写的 RegEx

"(?i)if"

就足够了

于 2012-10-17T16:00:50.147 回答
3

这将匹配iF, IF , If and if

[iI][fF]
于 2012-10-17T16:02:04.730 回答
2

我怀疑你想要类似的东西:

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

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

于 2012-10-17T16:03:14.187 回答
2

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

String regex = "(?i)if";
于 2012-10-17T16:03:34.577 回答
1

尝试使用这个:

/if/i

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

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

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

或者,更简洁地说:

Pattern p = Pattern.compile("(?i)if");
于 2012-10-17T16:01:07.493 回答
1

我知道您要求使用正则表达式,但是您为什么不使用equalsIgnoreCase(String) 之类的

boolean b = yourString.equalsIgnoreCase("if");
于 2012-10-17T16:06:16.713 回答