用正規表示式匹配多行文字
匹配多行文字通常需要處理換行和錨定。當使用 Java 的 Pattern 類別時,有兩個修飾符可以幫助實現這一點:Pattern.MULTILINE 和 String.matches()。但是,它們的用法可能會產生混淆。
Pattern.MULTILINE 與(?m)
Pattern.MULTILINE 和(?m) 都有相同的用途:允許^ 和$ 在每行的開頭和$結尾匹配,而不僅僅是在整行的開頭和結尾string.
String.matches() 與Pattern.matcher()
String.matches() 期望正規表示式符合整個字串。這意味著在處理多行文字時它的使用會受到限制。
解決範例
在提供的範例中, (?m) 與 String.matches( ),這就是問題所在。由於正規表示式僅捕獲多行文字的一部分,因此 String.matches() 無法匹配整個字串並傳回 false。
多行匹配的正確用法
要正確匹配多行文本,您應該使用Pattern.compile() 和Pattern.DOTALL 修飾符,它允許點( .) 匹配換行符。以下是程式碼的更新版本:
此程式碼將成功擷取多行「使用者評論:」之後的文字。
以上是如何正確匹配多行文字與Java正規表示式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!