2013-04-12 49 views
1

我想用文字2之間的所有文本(第一個字是固定的[大],但第2個或者是2個字[二]或[三])。查找單詞之間的文本在Java中

注意 ::發現的文本和第二個詞之間可能有或沒有空格。 例如:

One  i am 
here 
Two 
i am fine 
One  i am 
here 
Two 
i am fine 
One  i am 
here 
Three 
i am fine 
One  i am 
here 
Two 
i am fine 

我發現什麼是

Pattern p = Pattern.compile("(?<=\\bOne\\b)(.*?)(?=\\bTwo\\b)"); 

但由於它需要完整的單詞,這是不正確的。

「二」 是有效的。
「fineTwo」 是無效的。

+0

你回顧後似乎無效。嘗試:(?<= One)(。*?)(?= \\ b(?:Two | Three)\\ b)' – anubhava

回答

3

它只能在完整的單詞匹配,因爲你用字邊界\b。如果你想接受「fineTwo」,然後取下第一邊界

Pattern p = Pattern.compile("(?<=\\bOne\\b)(.*?)(?=Two\\b)"); 

能夠接受「二」或「三」爲結束,用交替:

Pattern p = Pattern.compile("(?<=\\bOne\\b)(.*?)(?=(?:Two|Three)\\b)"); 
0

試試這個:

for(String parseOne : Input.split("One")) 
    for (String parseTwo : parseOne.split("Two")) 
    for (String parseThree : parseTwo.split("Three")) 
     System.out.println(parseThree.replace("One", "").replace("Two", "").replace("Three", "").trim()); 
0

getTextBetweenTwoWords方法可以正常工作。

public static void main(String[] args) 
{ 
    String firstWord = "One"; 
    String secondword = "Two"; 
    String text = "One Naber LanTwo"; 
    System.out.println(getTextBetweenTwoWords(firstWord, secondword, text)); 
} 
private static String getTextBetweenTwoWords(String firstWord, String secondword, String text) 
{ 
    return text.substring(text.indexOf(firstWord) + firstWord.length(), text.indexOf(secondword)); 
}