【问题标题】:Regex pattern for finding a String contains some words AND doesn't have some other words用于查找字符串的正则表达式模式包含一些单词并且没有其他单词
【发布时间】:2026-02-07 22:40:01
【问题描述】:

我正在使用 Java regex util 创建一个程序,现在我需要找到一些包含一些单词但没有其他单词的字符串。

例如:

我想找到带有'for'的字符串并删除它之后的所有内容,但如果字符串有'centre for',我们什么也不做。

有一些句子我想检查一下:

1. This program for all people => 这个程序(删除'for'之后的所有内容)

2. Centre for Effective Practice => 什么都不做,因为句子中有“Centre for”

我需要一个可以解决问题的正则表达式。

我也尝试使用该模式:"(?=(for.*))(?!(Centre for))",但效果不佳

【问题讨论】:

    标签: java regex string regex-negation


    【解决方案1】:

    你可以像这样使用否定的lookbehind:

    String str = "This program for all people";
    String repl = str.replaceFirst("(?<!Centre) for.*", "");
    

    【讨论】:

    • @TimPietzcker:非常感谢修复它。
    • 呃,如果Centrefor 之间有多个空格,您的编辑现在会失败。最好删除+ 或在空格前添加\\b
    最近更新 更多