利用正则表达式进行多行文本匹配
尝试在 Java 中使用正则表达式匹配多行文本时,需要考虑某些注意事项。 Pattern.MULTILINE 修饰符和 (?m) 简写似乎可以呈现意想不到的结果。
要理解该行为,必须澄清修饰符的用途。 Pattern.MULTILINE (?m) 使锚点 ^(行首)和 $(行尾)能够在每行的开头和结尾处匹配,而不是仅在字符串的边界处匹配。另一方面,Pattern.DOTALL (?s) 允许点字符匹配换行符。
在您的示例中,(?m) 模式在与 String.matches 一起使用时会失败,因为 matches() 需要正则表达式匹配整个字符串。由于您的正则表达式 (W)(S) 仅匹配字符串的一部分,因此比较结果为 false。
要查找以“User Comments:”开头的字符串,这是一个正则表达式更适合该任务的是:
^\s*User Comments:\s*(.*)
此正则表达式使用 Pattern.DOTALL 允许点匹配换行符,并且它捕获将“用户评论:”后面的文本放入第一个捕获组中。
通过使用 DOTALL 修饰符并利用正确的匹配方法(find() 或 matches()),您可以使用正则表达式有效地匹配多行文本Java。
以上是Java中如何使用正则表达式有效匹配多行文本?的详细内容。更多信息请关注PHP中文网其他相关文章!