我需要一个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)
但每当一个新的非法角色爬上来时,我需要调整那个命令......所以:不完美.
有任何想法吗?
谢谢!
在正则表达式中,你可以使用一个否定的字符类,^在要被否定的字符之前添加一个克拉,它将完全符合你的要求:
replace($x/ID, '[^A-Za-z_0-9]', ''))
Run Code Online (Sandbox Code Playgroud)