2

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

假设第一个关键字是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 在

4

2 回答 2

3

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

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

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

于 2012-05-05T14:39:57.987 回答
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"
于 2012-05-05T14:40:26.660 回答