Java 正则表达式得到以问号结尾的句子

Java 正则表达式得到以问号结尾的句子,java,regex,Java,Regex,我收到了一个大文件,上面记录了过去5年我所有的电子邮件活动。 我想把我所有带问号的句子都拿回来。 我不擅长正则表达式,我只知道一些可以做的事情 有人能给我一个能用的正则表达式吗?(爪哇) 如果可能,我想在下一个示例中返回粗体: Lorem ipsum dolor sit amet,是一位杰出的献身者。Sed amet elementum整数nec直径,eu CONCENTETTUR nibh?与自然社会(sociis natoque penatibus et magnis dis-parturi

我收到了一个大文件,上面记录了过去5年我所有的电子邮件活动。 我想把我所有带问号的句子都拿回来。 我不擅长正则表达式,我只知道一些可以做的事情

有人能给我一个能用的正则表达式吗?(爪哇)

如果可能,我想在下一个示例中返回粗体:


Lorem ipsum dolor sit amet,是一位杰出的献身者。Sed amet elementum整数nec直径,eu CONCENTETTUR nibh?与自然社会(sociis natoque penatibus et magnis dis-parturient montes)。

您可以使用如下表达式:
[^.!?]+\?


这至少与示例中所需的文本相匹配。

您可以使用如下表达式:
[^.!?]+\?

这将至少与示例中所需的文本匹配。

请尝试以下代码:

    String str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
            + "My second question? Sed amet elementum."
            + "Integer nec diam erat, eu consectetur nibh?"
            + "Cum sociis natoque penatibus et magnis dis parturient montes.";
    Pattern pattern = Pattern.compile("([^.?!]*)\\?");
    Matcher matcher = pattern.matcher(str);
    while(matcher.find())
    {
        System.out.println(matcher.group());
    }
它输出:

My second question?
Integer nec diam erat, eu consectetur nibh?
在这里,我将句子结尾定义为
但您可以轻松扩展该列表。

尝试以下代码:

    String str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
            + "My second question? Sed amet elementum."
            + "Integer nec diam erat, eu consectetur nibh?"
            + "Cum sociis natoque penatibus et magnis dis parturient montes.";
    Pattern pattern = Pattern.compile("([^.?!]*)\\?");
    Matcher matcher = pattern.matcher(str);
    while(matcher.find())
    {
        System.out.println(matcher.group());
    }
它输出:

My second question?
Integer nec diam erat, eu consectetur nibh?

在这里,我将句子结尾定义为
但您可以轻松扩展该列表。

^意味着您将匹配所有字符,后面列出的字符除外。您可以使用\\来转义?,这意味着您确实对字符问号感兴趣(否则?表示前面的项目是可选的)。^表示您将匹配所有字符,但后面列出的字符除外。您可以使用\\来转义?,这意味着您确实对字符问号感兴趣(否则?表示前面的项目是可选的)。