以下是代码:
String Str ="Animals \n" +
"Dog \n" +
"Cat \n" +
"Fruits \n" +
"Apple \n" +
"Banana \n" +
"Watermelon \n" +
"Sports \n" +
"Soccer \n" +
"Volleyball \n";
Str
基本上有3个类别(动物,水果,运动)。他们每个人都分开排列。使用正则表达式,如何找到Fruits的内容,这将给出如下输出:
Apple
Banana
Watermelon
我想要一个与你的答案一致的解释,这样我就能更好地理解这个问题。
感谢。 :)
答案 0 :(得分:1)
假设您要在单词“Fruits”和单词“Sports”之间提取文本,您可以使用带有capturing group的正则表达式。这样,如果字符串匹配,那么您仍然需要提取包含所需文本的group。
例如:
Pattern p = Pattern.compile("Fruits(.*?)Sports", Pattern.DOTALL);
// The string "Fruits" ------^ ^ ^ ^
// Capture everything in between --^ ^ ^
// The string "Sports" -----------------^ ^
// This tells the regex to treat newlines ^
// like normal characters ---------------------^
请参阅下面的railroad diagram:
或者,您可以使用positive lookahead and lookbehinds使用更高级的正则表达式。这意味着您可以使正则表达式仍然在“Fruit”和“Sports”之间查找文本,但不要将这些字符串本身视为匹配的一部分。
Pattern p = Pattern.compile("(?<!Fruits).*?(?=Sports)", Pattern.DOTALL);
答案 1 :(得分:0)
我首先将字符串拆分为单词数组(String[] words = Regex.Split(Str, "\n");
),然后循环遍历words
数组,在进行时将元素添加到适当的类别,在类别之间切换为你看到了标题。