如何在XPATH中提取与模式匹配的文本?

JD.*_*JD. 6 regex xpath pattern-matching

我的数据看起来像这样:

<value>v13772   @FBst0451145:w&lt;up&gt;1118&lt;/up&gt;; P{GD3649}v13772@
v13773  @FBst0451146:w&lt;up&gt;1118&lt;/up&gt;; P{GD3649}v13773@</value>
Run Code Online (Sandbox Code Playgroud)

如何在XPATH中处理此字符串以提取任何和所有@FBst #######数字?

我知道xpath matches()函数...但只返回true或false.如果我想要匹配的字符串,那就不好了.我已经四处寻找但是找不到这个问题的满意答案,这可能很常见.

谢谢!

Dim*_*hev 7

除了Michael Kay的好答案,如果你只想使用这个replace()函数,那么使用:

replace(.,'.*?(@FBst\d+).*','$1')
Run Code Online (Sandbox Code Playgroud)

结果是:

@FBst0451145
@FBst0451146
Run Code Online (Sandbox Code Playgroud)

如果您只想要上述结果中的数字,请使用:

replace(replace(.,'.*?(@FBst\d+).*','$1'),
          '[^0-9]+', ' ')
Run Code Online (Sandbox Code Playgroud)

这会产生:

 0451145 0451146
Run Code Online (Sandbox Code Playgroud)