Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用contains时字符串不匹配_Java_Regex_Contains - Fatal编程技术网

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

在Java中使用contains时字符串不匹配,java,regex,contains,Java,Regex,Contains,我正在使用list来匹配字符串。请看一下我的源代码: List<String> list=new ArrayList<String>(); list.add("my-name-is-foo"); match = list.contains("(.*)name(.*)"); List List=new ArrayList(); 添加(“我的名字是foo”); match=list.contains((*)名称(*); 此程序将给出false作为输出 请帮帮我 clas

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

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

match = list.contains("(.*)name(.*)");
List List=new ArrayList();
添加(“我的名字是foo”);
match=list.contains((*)名称(*);
此程序将给出
false
作为输出

请帮帮我

class
ArrayList
contains()
方法不像您想象的那样采用正则表达式

像这样的一句话:

match = list.contains("(.*)name(.*)");
将查找文本字符串
“(*)名称(.*)”
,而不进行正则表达式匹配

如果要进行正则表达式匹配,则必须循环列表中的字符串,并测试每个字符串是否与正则表达式匹配

Pattern pattern = Pattern.compile("(.*)name(.*)");

for (String element : list) {
    if (pattern.matcher(element).matches()) {
        System.out.println("Found a match: " + element);
    }
}
ArrayList
contains()
方法不像您想象的那样采用正则表达式

像这样的一句话:

match = list.contains("(.*)name(.*)");
将查找文本字符串
“(*)名称(.*)”
,而不进行正则表达式匹配

如果要进行正则表达式匹配,则必须循环列表中的字符串,并测试每个字符串是否与正则表达式匹配

Pattern pattern = Pattern.compile("(.*)name(.*)");

for (String element : list) {
    if (pattern.matcher(element).matches()) {
        System.out.println("Found a match: " + element);
    }
}

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

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<String> list=new ArrayList<String>();
list.add("my-name-is-foo");

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

ArrayList的contains方法不支持正则表达式查询或通配符。查看此stackoverflow帖子,了解如何实现此功能:


ArrayList的contains方法不支持正则表达式查询或通配符。查看此stackoverflow帖子,了解如何实现此功能:

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());
List List=new ArrayList();
列表。添加(“1-name-1”);
模式p=Pattern.compile((*)名称(*);
布尔f=list.stream().anyMatch(p.asPredicate());
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());
List List=new ArrayList();
列表。添加(“1-name-1”);
模式p=Pattern.compile((*)名称(*);
布尔f=list.stream().anyMatch(p.asPredicate());

我很确定这里的“contains”将寻找一个精确匹配项。。不执行任何正则表达式匹配。您需要手动循环列表的内容并检查每个字符串。我非常确定“contains”将在此处查找精确匹配项。。不执行任何正则表达式匹配。您需要手动循环列表的内容并检查每个字符串。对于Java 8代码段:+1对于Java 8代码段:+1,我们如何使用Java 8 lambda表达式打印所有匹配的元素?我将在一分钟后给出一个代码段要打印所有匹配的元素,请使用:
match=list.stream().filter(s->s.matches((*)name(.*))。forEach(System.out::println);
如何使用java 8 lambda表达式打印所有匹配的元素?我会在一分钟后给出一个片段要打印所有匹配的元素,请使用:
match=list.stream().filter(s->s.matches((.*)name(.*)).forEach(System.out::println);