在Java中使用contains不匹配字符串

时间:2015-04-08 13:05:02

标签: java regex contains

我正在使用list来匹配字符串。请看一下我的源代码:

List<String> list=new ArrayList<String>();
list.add("my-name-is-foo");

match = list.contains("(.*)name(.*)");

此程序将false作为输出。

请帮助我!

4 个答案:

答案 0 :(得分:2)

要检查列表中的正则表达式的内容,您需要迭代它:

List<String> list=new ArrayList<String>();
list.add("my-name-is-foo");

match = false;
for (String s : list) {
    if (s.matches("(.*)name(.*)")) {
        match = true;
        break;
    }
}

List#contains通过相等来检查存在,而不是在元素上应用正则表达式。

在Java 8中:

match = list.stream().anyMatch(s -> s.matches("(.*)name(.*)"));

答案 1 :(得分:2)

Java 8风格:

    List<String> list = new ArrayList<String>();
    list.add("1-name-1");
    Pattern p = Pattern.compile("(.*)name(.*)");
    boolean f = list.stream().anyMatch(p.asPredicate());

答案 2 :(得分:0)

contains()的{​​{1}}方法不会采用正则表达式,因为您似乎认为它。

这样的一行:

ArrayList

将查找文字字符串match = list.contains("(.*)name(.*)"); ,而不是正则表达式匹配。

如果你想进行正则表达式匹配,你必须遍历列表中的字符串并测试每个字符串是否与正则表达式匹配。

"(.*)name(.*)"

答案 3 :(得分:0)

ArrayList的contains方法不支持正则表达式查询或通配符。请查看此stackoverflow文章,了解如何实现此目的:

Search for a regexp in a java arraylist