正则表达式发现Java不区分大小写

时间:2015-11-21 21:55:29

标签: java regex string list filter

我想在列表中找到以下单词,但我无法在java中使用正确的正则表达式。

的Ar 杜伊诺,吉的 AR 下,北的 AR

String keyWord = ar;
List<String> l = hubList.stream().filter(x -> x.matches("(?i)("+keyWord+")").collect(Collectors.toList();

1 个答案:

答案 0 :(得分:1)

要匹配字符串中的ar(您需要与matches()完全匹配!),您需要在关键字之前和之后允许任何符号。

由于关键字可能包含(可能)特殊的正则表达式字符(例如([),因此使用\Q...\E运算符表示更安全它们之间的字符被视为文字字符。

因此,我建议

x.matches("(?si).*\\Q"+keyWord+"\\E.*")

如果不是这样,那么只会有字母:

x.matches("(?si).*"+keyWord+".*")

请注意,我还添加了(?s)单行修饰符,以强制.匹配任何字符,甚至是换行符。