一千萬個為什麽

搜索

在Java中使用正則表達式匹配句子

我正在使用java中的Scanner類來瀏覽文本文件並提取每個句子。我在我的掃描儀上使用setDelimiter方法到正則表達式:

Pattern.compile("[\\w]*[\\.|?|!][\\s]")

這目前似乎有效,但它在句子的末尾留下了空格。有沒有一種簡單的方法來匹配最後的空白,但不包括在結果中?

我意識到這可能是一個簡單的問題,但我從來沒有使用正則表達式,所以很容易:)

最佳答案

嘗試這個:

"(?<=[.!?])\\s+"

這使用 lookarounds 來匹配之前的 \\ s + > [!?] </代碼>。


如果你想刪除標點符號,那麽只需將其作為匹配的一部分包含在內:

"[.!?]+\\s+"

This will split "ORLY!?!? LOL" into "ORLY" and "LOL"

轉載註明原文: 在Java中使用正則表達式匹配句子