Scala:查找匹配正则表达式的所有实例并存储在数组中

时间:2017-08-03 15:56:12

标签: regex scala

我在Scala中有一个字符串。我试图找到所有出现的某个标签,并找到标签中包含的文本,将结果存储在一个数组中。

例如,如果我的字符串是val string = "<p> c </p> <p> a </p> <p> t </p>" 我要找的结果是:

val result = ["c","a","t"]

最好的方法是什么?谢谢!
注意:我确定我搜索的标记类型永远不会嵌套在其自身的另一个实例中,如果有帮助的话。

2 个答案:

答案 0 :(得分:4)

这里对Tony的建议略有修改。

val string = "<p> c </p> <p> a </p> <p> t </p>"
val re = "(?<=<p>)([^<]*)(?=</p>)".r
re.findAllMatchIn(string).map(_.toString.trim).toArray
// res0: Array[String] = Array(c, a, t)

.trim部分是可选的。

答案 1 :(得分:0)

以下表达式将匹配<p></p>之间的所有字母。

(?<=<p>)[^<>]*(?=<\/p>)

您的匹配列表应该会产生您要查找的结果。

请尝试以下方法获取匹配列表:

val reg = "(?<=<p>)[^<>]*(?=<\/p>)".r
val str = "<p> c </p> <p> a </p> <p> t </p>"
val matches = reg.findAllIn(str)

while (matches.hasNext) {

    val match = matches.next

}