Java 如何在与regexp不匹配的映射中查找字符串键?

Java 如何在与regexp不匹配的映射中查找字符串键?,java,regex,Java,Regex,我只需要一个映射,它包含与某个regexp不匹配的所有键和值。在Java中是否有一种简单的方法来否定查找或匹配 Pattern pattern = Pattern.compile("(.*)"+dateFormatter.format(Date.from(now))+"(.*)"); Map<String, Writer> toBeClosed = orcWriterMap.entrySet().stream() .filter(entry -> pattern.matc

我只需要一个映射,它包含与某个regexp不匹配的所有键和值。在Java中是否有一种简单的方法来否定查找或匹配

Pattern pattern = Pattern.compile("(.*)"+dateFormatter.format(Date.from(now))+"(.*)");

Map<String, Writer> toBeClosed = orcWriterMap.entrySet().stream()
  .filter(entry -> pattern.matcher(entry.getKey()).find())
  .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
不要用

不要用

可以对Mather matches函数求反

.filter(entry -> !pattern.matcher(entry.getKey()).matches())
在这种情况下,使用matches函数比使用find函数更好,因为我们不处理多个子序列。

您可以对Mather matches函数求反

.filter(entry -> !pattern.matcher(entry.getKey()).matches())

在这种情况下,使用matches函数比使用find函数更好,因为我们不处理多个子序列。

您还可以将模式转换为谓词。 例如:


还可以将模式转换为谓词。 例如:


请查看代码的以下部分:

filter(entry -> pattern.matcher(entry.getKey()).find())
您可以在这里过滤源流。 对于每个源条目,检查该条目中是否包含密钥 在模式中的某个地方有匹配项

因此,如果您想获得一个包含与模式不匹配的键的贴图, 然后只需取消过滤条件:

filter(entry -> !pattern.matcher(entry.getKey()).find())

请注意感叹号字符-否定运算符。

请查看代码的以下部分:

filter(entry -> pattern.matcher(entry.getKey()).find())
您可以在这里过滤源流。 对于每个源条目,检查该条目中是否包含密钥 在模式中的某个地方有匹配项

因此,如果您想获得一个包含与模式不匹配的键的贴图, 然后只需取消过滤条件:

filter(entry -> !pattern.matcher(entry.getKey()).find())

注意感叹号char-negation运算符。

使用。splitpattern@WiktorStribiżew不知道你的意思。使用。splitpattern@WiktorStribi我们不知道你的意思。这种方法真的很有趣!这种方法真的很有趣!