使用正規表示式符合多行文字
嘗試在Java 中符合多行文字時,您可能會遇到使用Pattern 類別之間的行為差異使用Pattern.MULTILINE 修飾符並使用(?m) 修飾符。
要理解差異,掌握這些修飾符的用途至關重要。
Pattern.MULTILINE 和 (?m)
Pattern.MULTILINE 和 (?m) 都用於擴展正規表示式錨點(^ 和$)的行為不僅符合整個字串的開頭和結尾,還符合字串中每行的開頭和結尾string.
Pattern.DOTALL 和(?s)
但是,這些修飾符之間的主要區別在於換行符(回車符)的處理。 Pattern.MULTILINE 不會擴展點 (.) 通配符的匹配能力以包含換行符。要包含它們,您必須使用 Pattern.DOTALL 或 (?s)。
符合範例字串
在您的範例中,字串包含多行,並且您想要尋找以「使用者評論:」開頭的文字。單獨使用 Pattern.MULTILINE 將允許錨點匹配每行的開頭,但點字元不會匹配換行符。
要正確匹配多行文字並捕獲「使用者評論:」之後的字符,您應該將Pattern.DOTALL 或(?s) 與Pattern.MULTILINE 或(?m) 結合使用:
Pattern regex = Pattern.compile("^\s*User Comments:\s+(.*)", Pattern.DOTALL); Matcher regexMatcher = regex.matcher(subjectString); if (regexMatcher.find()) { ResultString = regexMatcher.group(1); }
此正規表示式將符合以下內容的開頭每行並將進一步捕獲「使用者評論:」之後的所有非空白字元。
以上是在 Java 正規表示式中符合多行文字時,「Pattern.MULTILINE」和「(?m)」有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!