在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
作为输出
请帮帮我 classArrayList
的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);