Regex 查找两个标记之间的文本

Regex 查找两个标记之间的文本,regex,scala,Regex,Scala,下面我尝试使用正则表达式.find1.查找两个标记之间的文本: val line = "<hr>this is find1 the line 1 <hr> tester here <hr> this is a new line <hr>" val toFind = "<hr>.find1.<hr>".r println(toFind.findFirstIn(line)) val line=“这是第1行测试仪找到的这

下面我尝试使用正则表达式

.find1.
查找两个

标记之间的文本:

val line = "<hr>this is find1 the line 1 <hr> tester here <hr> this is a new line <hr>"
  val toFind = "<hr>.find1.<hr>".r
  println(toFind.findFirstIn(line))
val line=“
这是第1行
测试仪找到的
这是一个新行
” val toFind=“
.find1.
”.r println(toFind.findFirstIn(行))
输出应为:
这是在第1行找到的

但是找不到文本。如何修改正则表达式以查找文本


更新:要查找的元素可以位于列表中的任何位置

使用字符串上的
拆分
,如下所示

line.trim.split("<hr>").dropWhile(_.isEmpty).take(1)
Array("this is find1 the line 1 ")
line.trim.split(“
”).dropWhile(u.isEmpty)。take(1) 数组(“这是第1行中的find1”)

<强> Update <强> >为了查找包含字符串的分区,请考虑此,

line.split("<hr>").find( _.contains("find1"))
Some(this is find1 the line 1 )
line.split(“
”).find(u.contains(“find1”)) 一些(这是在第1行中找到的)
另一种方法是组合和惰性匹配

val toFind = "<hr>(((?!<hr>).)*find1.*?)<hr>".r
println(toFind.findFirstMatchIn(line).map(_.group(1)))
val-toFind=“
(((?!
))*find1.*?
”。r println(toFind.findFirstMatchIn(line.map)(组(1)))
谢谢,请参阅更新,要查找的元素并不总是列表中的第一个元素也许有第三方库,您可以使用它而不是处理字符串操作?尽管假设
hr
是一个HTML标记,但我不确定Scala中是否有现成的HTML解析库。我无法抗拒: