使用正则表达式Scala在String中查找几组事件

时间:2017-07-04 14:14:44

标签: regex scala

我有一个像这样的字符串:

val rawData = "askljdld<a>content to extract</a>lkdsjkdj<a>more content to extract</a>sdkdljk

我希望在标记<a>

之间提取内容

我试过这个,但正则表达式的结尾部分没有像我预期的那样工作:

val regex = "<a>(.*)</a>".r
for(m <- regex.findAllIn(rawData)){
      println(m)
    }

输出是:

<a>content to extract</a>lkdsjkdj<a>more content to extract</a>

我了解发生了什么:正则表达式找到第一个<a>和最后一个</a>。 我怎么能有一个带有两个条目的迭代器?

<a>content to extract</a>
<a>more content to extract</a>

提前致谢

2 个答案:

答案 0 :(得分:1)

一切都很简单:"<a>(.*?)</a>"

.*? - 表示anything until something。在你的情况下,直到</a>

答案 1 :(得分:0)

你的正则表达不是正确的。您应该使用<a>(.*?)</a>代替

val rawData = "askljdld<a>content to extract</a>lkdsjkdj<a>more content to extract</a>sdkdljk"

val regex = "<a>(.*?)</a>".r

regex.findAllIn(rawData).foreach(println)