我在Scala中有一个字符串。我试图找到所有出现的某个标签,并找到标签中包含的文本,将结果存储在一个数组中。
例如,如果我的字符串是val string = "<p> c </p> <p> a </p> <p> t </p>"
我要找的结果是:
val result = ["c","a","t"]
最好的方法是什么?谢谢!
注意:我确定我搜索的标记类型永远不会嵌套在其自身的另一个实例中,如果有帮助的话。
答案 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
}