Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于提取字符串值的正则表达式_Regex_Xquery - Fatal编程技术网

Regex 用于提取字符串值的正则表达式

Regex 用于提取字符串值的正则表达式,regex,xquery,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_

我得到的结果如下所示,但我想通过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

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

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

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

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

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

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

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

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

这将在XQuery 1.0或3.0中工作,如果您只需要路径中的文件名,可以使用

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

这将在XQuery 1.0或3.0中起作用,因此您试图分割结果中的元素?@user您在标题中的意思是您要求使用正则表达式,但在这里您要求使用XQuery。哈?那么你是想分割结果中的元素吗?@user你在标题中的意思是你要求正则表达式,但在这里你要求xquery。呵呵?