java - 从字符串 java 8 中获取不匹配的部分

标签 java regex java-8

我的字符串是“I am new to Java (*)”

我的实际字符串是我是 Java 8 的新手,我将从我的 map 中获取一堆键,其中我需要提取此处不匹配的部分 8

我的最终 map 应该包含第一个字符串是键,值是不匹配的部分我将如何在java 8中做到这一点

Pattern p =Pattern.compile("I am new to Java (*)");

map= map.entrySet()
        .stream()
        .filter(p -> p.getKey().contains("Java")&&p.getKey().matches("I am new to Java (*)"))
        .collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));

我正在使用下面的一个,但它坏了,有人可以建议吗?

我想要类似的东西

Map<String, String> result=map.entrySet().stream().filter(k-> k.getKey().matches(test) && k.getKey().contains(test))
        .collect(Collectors.toMap(k->k.getKey(), ::p.matcher().group(1)));

我能够使用两张 map 来实现它

Map<String, String> result = new HashMap<>();
map.forEach((k,v)->{
            if(k.contains(test)) {
                while(p.matcher(k).find()) {
                    result.put(k, p.matcher(k).group(1));
                }
            }
        });

但我希望它在一张 map 中

最佳答案

如果我理解正确(并稍微简化了你的示例):

String test = "I am new to Java 8 ";
String t = "I am new to Java (.*) ";
Map<String, String> map = new HashMap<>();
map.put(test, "value1");
map.put("some", "value2");

Map<String, String> result = map.entrySet()
            .stream()
            .filter(e -> !e.getKey().equals(e.getKey().replaceAll(t, "$1")))
            .collect(Collectors.toMap(
                    e -> e.getKey().replaceAll(t, "$1"),
                    Entry::getValue));

关于java - 从字符串 java 8 中获取不匹配的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46609988/

相关文章:

java - 如何解决 PostgreSQL 的连接问题

java - 你如何用 Java 编写解构函数?

ruby-on-rails - Ruby Regex MatchData 对象捕获行为异常的方法

正则表达式 serde 读取配置单元中的日志文件

xml - 错误 : Could not find or load main class com. sun.tools.internal.xjc.XJCFacade

java - 字符串和变量串联的JOptionPane错误

java - Spring数据MongoDB : How do I represent $eq in project aggregation query?

python - 无法使用正则表达式获取图像路径

java - 在流过滤器中包含 IgnoreCase 来计算字符串列表中某个特定单词的出现次数

Java 8 FlatMap - 在嵌套表单中添加项目并使用 FlatMap 检索对象