Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Reg-ex查找一组单词?_Java_Regex - Fatal编程技术网

Java 如何使用Reg-ex查找一组单词?

Java 如何使用Reg-ex查找一组单词?,java,regex,Java,Regex,代码如下: String Str ="Animals \n" + "Dog \n" + "Cat \n" + "Fruits \n" + "Apple \n" + "Banana \n" + "Watermelon \n" + "Sports \n" + "S

代码如下:

String Str ="Animals \n" +
                "Dog \n" +
                "Cat \n" +
            "Fruits \n" +
                "Apple \n" +
                "Banana \n" +
                "Watermelon \n" +
            "Sports \n" +
                "Soccer \n" +
                "Volleyball \n";
Str
基本上有3类(动物、水果、运动)。他们每一个人都排成一行。使用正则表达式,我如何找到水果的内容,它将提供如下输出:

Apple
Banana
Watermelon
我想要一个与你的答案相一致的解释,这样我就可以更好地理解这个问题


谢谢。:)

我首先将字符串拆分为一个单词数组(
string[]words=Regex.Split(Str,“\n”);
),然后循环遍历
单词
数组,将元素添加到适当的类别中,在标题所示的类别之间切换。

假设要提取“水果”和“运动”之间的文本,可以使用带有。这样,如果字符串匹配,则仍然必须提取包含所需文本的字符串

例如:

Pattern p=Pattern.compile(“水果(.*)运动”,Pattern.DOTALL);
//字符串“Fruits”---^^^^
//捕获介于之间的所有内容--^^^
//字符串“Sports”---------------^^
//这告诉正则表达式处理换行符^
//像普通人一样---------------------^
见下文:

或者,您可以使用更高级的正则表达式。这意味着你可以让你的正则表达式仍然在“水果”和“体育”两个词之间寻找文本,但是不要把这些字符串看作是匹配的一部分。
Pattern p=Pattern.compile((?Regex不知道水果是什么:)@jitendra请解释一下为什么
\p{fruit}+
不起作用。@贾维尔我的意思是,Regex无法分辨苹果是水果。而且,我是在讽刺。如果没有区分类别(水果、运动)的标记的话从普通实体来看,实施可能会有所改进。谢谢。这是迄今为止我收到的最好的回复。我想我现在已经理解了这个概念。:)