我希望找到一个匹配单词所有组合的正则表达式if
。所以有效的是:
iF, IF , If and if
我在这里有一个正则表达式:[iIfF]*
尽管它与我想要的匹配,但它也匹配单词Fi
和其他此类组合。
我在哪里犯错误?
由于您似乎正在使用 Java,因此您希望:
Pattern p = Pattern.compile("if", Pattern.CASE_INSENSITIVE);
[iI][fF]
括号中的所有内容都可以任意组合。
EDIT Java 允许不区分大小写的 RegEx
"(?i)if"
就足够了
这将匹配iF, IF , If and if
[iI][fF]
我怀疑你想要类似的东西:
Pattern pat = Pattern.compile("if", Pattern.CASE_INSENSITIVE);
这是使您的模式在 Java 中不区分大小写的常用方法。
(?i)
您可以使用标志 使您的正则表达式不区分大小写:
String regex = "(?i)if";
尝试使用这个:
/if/i
最后i
的使匹配不区分大小写。
抱歉——戴上了我的 Perl 帽子。您可以使用不区分大小写的模式:
Pattern p = Pattern.compile("if", Pattern.CASE_INSENSITIVE);
或者,更简洁地说:
Pattern p = Pattern.compile("(?i)if");
我知道您要求使用正则表达式,但是您为什么不使用equalsIgnoreCase(String) 之类的
boolean b = yourString.equalsIgnoreCase("if");