Java Regex否定某些词

时间:2012-05-05 14:33:26

标签: java regex

我需要一些帮助来创建正则表达式 我需要获得第一个关键字和最后一个关键字之间的所有单词。

假设第一个关键字为All,最后一个关键字为At

示例输入:

  

所有abc abcd abcccc abdd At

输出必须是:

  

abc abcd abccc abdd

这是我现在正在使用的正则表达式:

(\\s*All (\\w|\\s)+( At))

我的问题是,如果输入是这样的:

  

所有abc abc abc abc abc At At

输出结果为:

  

abc abc abc abc abc At

2 个答案:

答案 0 :(得分:3)

尝试非贪婪匹配中间的单词:

(\s*All (\w|\s)+?( At))

请注意添加的?符号。这应该告诉正则表达式引擎返回(\w|\s)+部分的最短匹配,希望得到你需要的结果。

答案 1 :(得分:0)

在缩小字符串之前:

String toSearchFor = source.substring (source.indexOf ("All"), source.indexOf ("At")+"At".length);

但是,我不知道如何处理

"At At All abc At All def All ghi At jkl At At All"