XQuery - 删除所有非{AZ,az,_,0-9}的字符(非法)

Dan*_*iel 1 regex xquery

我需要一个XQuery来删除任何不是{AZ,az,_,0-9}的字符 - 而不必在查询中明确指定它们.

目前我正在使用:

for $x in /xml/TEST
let $i := concat('M', replace($x/ID, '[\[\]\(\)°: ]', ''))
return element {$i} {$x/* except $x/ID}
Run Code Online (Sandbox Code Playgroud)

但每当一个新的非法角色爬上来时,我需要调整那个命令......所以:不完美.

有任何想法吗?

谢谢!

wst*_*wst 6

在正则表达式中,你可以使用一个否定的字符类,^在要被否定的字符之前添加一个克拉,它将完全符合你的要求:

replace($x/ID, '[^A-Za-z_0-9]', ''))
Run Code Online (Sandbox Code Playgroud)