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

新手上路,请多包涵

我正在尝试编写一个正则表达式模式来匹配任何以多个或一个制表符和/或空格开头的句子。例如,我希望我的正则表达式模式能够匹配“你好,我喜欢正则表达式!”但是所以我对如何在“你好”之后匹配单词感到困惑。到目前为止我有这个:

     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!");
    }

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

原文由 user1923 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 319
2 个回答
String regex = "^\\s+[A-Za-z,;'\"\\s]+[.?!]$"

^ 表示“开始于”

\\s 表示空白

+ 表示1个或多个

[A-Za-z,;'"\\s] means any letter, , , ; , ' , " , or whitespace character

$ 表示“以”结尾

原文由 Steve P. 发布,翻译遵循 CC BY-SA 3.0 许可协议

根据定义匹配句子的示例正则表达式:“句子是一系列字符,以至少一个空白字符开头,以 .!? ”如下:

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

正则表达式可视化

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

原文由 Taylor Hx 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题