Java 对照此模式检查任何文本:由两个或多个问题组成的句子

Java 对照此模式检查任何文本:由两个或多个问题组成的句子,java,regex,Java,Regex,我需要对照以下模式检查任何句子: A sentence that consist of two or more questions 例如,以下句子都符合这种模式: why do you look at me? Are you alright? I am sick. How are you?. Well you do not have to answer it. what's up? How are you?I am sick.what's up? Well you do not have

我需要对照以下模式检查任何句子:

A sentence that consist of two or more questions
例如,以下句子都符合这种模式:

 why do you look at me? Are you alright?
 I am sick. How are you?. Well you do not have to answer it. what's up?
 How are you?I am sick.what's up? Well you do not have to answer it. 
A sentence that consist of two or more questions
所以,因为这对我来说有点复杂,我试着只识别一个简单的问题,所以我这样写代码:

regx:

Java代码:

private static void questionInRow(String commentstr){
     String urlPattern = "^[why|who|where|when|how|did|do|were|was|would|will|should|could|can]\\S+?$";
     Pattern p = Pattern.compile(urlPattern,Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(commentstr);
        if (m.find()) {
            System.out.println("yes");
        }
}
但即使在我运行该代码时,它也不能与以下语句一起工作:

why I love u?
首先,查询有什么问题,我也不知道如何定义正则表达式来检查此模式:

 why do you look at me? Are you alright?
 I am sick. How are you?. Well you do not have to answer it. what's up?
 How are you?I am sick.what's up? Well you do not have to answer it. 
A sentence that consist of two or more questions

感谢您的帮助。

因为
\\S
代表非空白字符。但是在你的句子中,单词之间有空格

试试这个:

^[why|who|where|when|how|did|do|were|was|would|will|should|could|can]+[\s\S]+$

如果一个英语句子包含两个或多个问题,你要问的是一种用regex识别的方法

我将在这里介绍的正则表达式可能对您有所帮助,但它有很多缺陷。不是因为正则表达式不好,而是因为要为你的要求创建一个完美的正则表达式是不可能的

原因是。因此,正则表达式(即)无法解析英语(与解析英语的方式相同)

您可以尝试以下方法:

/
(
.*      #match whatever characters that can be in a sentence
\?      #match the question sign
){2,}   #must occur two or more times
/gx
。演示中的第10句是一个缺陷

该正则表达式将匹配带有两个或多个问题的句子,但有很大的偏差,因为检测问题的主要方法只是寻找问号,而不管上下文如何。因此,正则表达式认为这是由两个问题组成的:
“?”这个符号表示问题?

如果您只想匹配包含
为什么
什么
等词的问题,可以尝试使用以下选项:

/
(
.*
\b(why|what)\b
.*
\?
){2,}
/ igx

。演示中的第9句是一个缺陷。

试试这个,它将匹配两个或更多的问题
(.+?\?){2,}
谢谢你,但是如果我想检查特殊情况,比如为什么和什么问题?@Aruneshingh,你也能解释一下吗?\?因为我不明白它是如何处理这样的情况的,当问题不在一行的时候,例如,你怎么样?很好。怎么了?+?\?匹配任何非贪婪的东西?。还有其他的标点符号。如果你看句子中的匹配词,它们会是1)你好吗?很好。怎么了?@AruneshSingh所以这也应该做同样的事情:(\?\?){2,}我们不需要。+因为我们没有。+在两个之间?你能解释一下原因吗?试过了还是没用这个例子:为什么我爱你?如果你是这个意思,我试过还是没用:^[为什么|谁|在哪里|何时|如何|做|做|是|会|会|会|应该|会|会|会|会| |会| | | | | |会| | | | | |会?