正则表达式提取字符串值

时间:2014-07-15 13:32:23

标签: regex xquery

我得到的结果如下所示,但我想通过Xquery单独提取所有文件名。那么,单独提取文件的最佳方法是什么?

 db/Staff_Member1.xml db/Staff_Member2.xml db/Staff_Member3.xml db/Staff_Member4.xml db/Staff_Member5.xml db/Staff_Member6.xml db/Staff_Member7.xml db/Staff_Member8.xml db/Staff_Member9.xml db/Staff_Member10.xml db/Staff_Member11.xml db/Staff_Member12.xml db/Staff_Member13.xml db/Staff_Member14.xml db/Staff_Member15.xml

2 个答案:

答案 0 :(得分:2)

鉴于这是一些XQuery返回的字符串序列,我会在路径分隔符/上进行标记化,然后继续进行最后一段。为每个字符串运行tokenize:

let $path := 'db/Staff_Member1.xml'
let $basename := tokenize($path, '/')[last()]
return $basename

正则表达式不是必需的,只会使事情变得更复杂,并且只能从XQuery 3.0开始,因为XQuery 1.0可以验证字符串是否匹配,而不是返回匹配的子字符串。

答案 1 :(得分:2)

如果您只想要路径中的文件名,可以使用

replace($your-string, ".*/(.*)", "$1")

这适用于XQuery 1.0或3.0