更新:
String val="text KEYWORD1 text KEYWORD1 text KEYWORD2 text KEYWORD2";
String REGEX="KEYWORD1((.(?!KEYWORD1))+?)KEYWORD2";
Pattern pattern = Pattern.compile(REGEX);
Matcher matcher = pattern.matcher(val);
if(matcher.find()){
System.out.println(matcher.group());
}
檢查這個數字看,這是如何工作的:
Explanation :
第一捕獲組((.(?!KEYWORD1))+?)
第二捕獲組(.(?!KEYWORD1))+?
量詞(+?
):介於一個和無限次,儘可能少的次數儘可能,擴大視需要[懶惰]
注意:重複捕獲組將只捕獲最後一次迭代。 把捕獲組周圍的重複組來捕獲所有 迭代或使用非捕獲組,而不是如果你不 感興趣的數據
.
匹配任何字符(除換行符) (?!KEYWORD1)
負前瞻 - 斷言,這是不可能符合以下 KEYWORD1
正則表達式中的字符KEYWORD1
字面上(區分大小寫) KEYWORD2
字符KEYWORD2
字面上(區分大小寫)
匹配相匹配看看貪婪vs非貪婪的正則表達式。 – Trenin