我希望在两个单词之间得到所有文本(第一个单词是固定的[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”无效。
答案 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));
}