从正则表达式构建字符串

时间:2015-08-19 08:26:31

标签: regex string scala

我的情况是我的代码中有一个正则表达式,用于匹配用户可以订阅数据的各种端点(例如"some/end/(.+)/point".r;有点像REST端点)其中正则表达式允许用户为他们想要订阅的某个对象指定ID,这样他们就不会得到终点可以表示的整个集合。

我现在的问题是,当我拥有元素的ID时,我想重建一个特定的终点。换句话说,我想通过以某种方式为这个正则表达式提供ID来构建一个字符串,这样它就会产生所需的终点字符串,但不会重复数据。

我怎样才能做到最好? 我应该将端点正则表达式存储为字符串吗? (允许我去"some/end/(.+)/point".replaceAll("(.+)", myId)) 或者有一种很好的方法来进行这种“反向”正则表达式匹配吗?

1 个答案:

答案 0 :(得分:0)

您可以使用字符串插值并切换到regexp:

def endPoint(id : String) = s"some/end/$id/point"

val pattern = "(.+)"
val EndPointPattern = endPoint(pattern).r
println(s"EndPointPattern = $EndPointPattern")

val EndPointPattern(idFound) = "some/end/JohnDoe/point"
println(s"idFound = $idFound")

val endPointString = endPoint(idFound)
println(s"endPointString = $endPointString")