构造正则表达式模式以匹配句子

2022-09-03 03:13:04

我正在尝试编写一个正则表达式模式,该模式将匹配以多个或一个选项卡和/或空格开头的任何句子。例如,我希望我的正则表达式模式能够匹配“你好,我喜欢正则表达式!”,但我在如何匹配“你好”之后的单词上挠头。到目前为止,我有这个:

    String REGEX = "(?s)(\\p{Blank}+)([a-z][ ])*";
    Pattern PATTERN = Pattern.compile(REGEX);
    Matcher m = PATTERN.matcher("         asdsada  adf adfah.");
    if (m.matches()) {
        System.out.println("hurray!");
    }

任何帮助将不胜感激。谢谢。


答案 1
String regex = "^\\s+[A-Za-z,;'\"\\s]+[.?!]$"

^表示 “开头为”
表示空格
表示 1 个或多个
表示任何字母,、或空格字符
表示“结尾为”\\s+[A-Za-z,;'"\\s],;'"$


答案 2

一个示例正则表达式,用于按定义匹配句子:“句子是一系列字符,从租借的一个空格字符开始,以 其中一个结尾,或 ”如下所示:.!?

\s+[^.!?]*[.!?]

Regular expression visualization

请注意,换行符也将包含在此匹配项中。