我想在列表中找到以下单词,但我无法在java中使用正确的正则表达式。
的Ar 杜伊诺,吉的 AR 下,北的 AR 二
String keyWord = ar;
List<String> l = hubList.stream().filter(x -> x.matches("(?i)("+keyWord+")").collect(Collectors.toList();
答案 0 :(得分:1)
要匹配字符串中的ar
(您需要与matches()
完全匹配!),您需要在关键字之前和之后允许任何符号。
由于关键字可能包含(可能)特殊的正则表达式字符(例如(
或[
),因此使用\Q...\E
运算符表示更安全它们之间的字符被视为文字字符。
因此,我建议
x.matches("(?si).*\\Q"+keyWord+"\\E.*")
如果不是这样,那么只会有字母:
x.matches("(?si).*"+keyWord+".*")
请注意,我还添加了(?s)
单行修饰符,以强制.
匹配任何字符,甚至是换行符。