在Java中的单词之间查找文本

时间:2013-04-12 06:05:09

标签: java regex search

我希望在两个单词之间得到所有文本(第一个单词是固定的[One],但是第二个单词是2个单词[Two]或[Three])。

注意 ::找到的文字和第二个字之间可能有空格,也可能没有空格。 例如:

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”无效。

3 个答案:

答案 0 :(得分:3)

它仅匹配完整的单词,因为您使用单词边界\b。如果你想接受“fineTwo”,那么删除第一个边界

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

要接受“两个”或“三个”作为结束,请使用替换:

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

答案 1 :(得分: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());

答案 2 :(得分: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));
}