我正在检查标题的关键字,输入完全不受我控制。
所以我发现他们将首字母大写,但也可能全部上限。
我可以做一个Java模式:
Pattern test = Pattern.compile("\\b(FOO|BAR|Foo|Bar)\\b");
使用它做一个模式匹配工作正常。如:
boolean ans = test.matcher(sometext).find();
然而,当我有6个或8个关键字要检查时,它开始变得有点丑陋,让所有关键字都有两次。
任何人都可以提出一个更优雅的正则表达式吗?
由于
ADDED 3/26/15
让我再次强调,它并不像完全忽略案件那么简单,这是最初的建议。第一个字母确实需要大写,其余的字符串可以是大写或更低。
答案 0 :(得分:0)
使用“忽略大小写”标记(?i)
:
Pattern test = Pattern.compile("(?i)\\b(FOO|BAR)\\b");
答案 1 :(得分:0)
您不需要\\b\\b
,因为任何正常情况都会被视为单词而不是字符类。
也使用i
(ignoreCase)修饰符。
你的正则表达式应该是:
(foo|bar)
根据您的语言添加i
修饰符
另外,你说“要测试”。使用正则表达式是过度的。
这样做:
String Str = new String("Welcome to Foo bar ");
Str = Str.toLowerCase();
return Str.contains("foo")||Str.contains("bar"); // returns true or false