我正在尝试从多行正则表达式中捕获内容.它不匹配.
val text = """<p>line1
line2</p>"""
val regex = """(?m)<p>(.*?)</p>""".r
var result = regex.findFirstIn(text).getOrElse("")
Run Code Online (Sandbox Code Playgroud)
返回空.
我把m - 标志放在多线上,但在这种情况下似乎没有帮助.
如果我删除换行符正则表达式工作.
我也发现了这个,但无法让它发挥作用.
如何匹配<p>元素之间的内容?我想要介于两者之间的一切,也包括换行符.
提前致谢!
如果此时不明显,"我如何匹配内容":
scala> val regex = """(?s)<p>(.*?)</p>""".r
scala> (regex findFirstMatchIn text).get group 1
res52: String =
line1
line2
Run Code Online (Sandbox Code Playgroud)
更具有惯用力,
scala> text match { case regex(content) => content }
res0: String =
line1
line2
scala> val embedded = s"stuff${text}morestuff"
embedded: String =
stuff<p>line1
line2</p>morestuff
scala> val regex = """(?s)<p>(.*?)</p>""".r.unanchored
regex: scala.util.matching.UnanchoredRegex = (?s)<p>(.*?)</p>
scala> embedded match { case regex(content) => content }
res1: String =
line1
line2
Run Code Online (Sandbox Code Playgroud)