我需要一个XQuery来删除任何不是{A-Z,a-z,_,0-9}的字符 - 而不必在查询中明确指定它们。
目前我正在使用:
for $x in /xml/TEST
let $i := concat('M', replace($x/ID, '[\[\]\(\)°: ]', ''))
return element {$i} {$x/* except $x/ID}
但每当一个新的非法角色爬上来时,我需要调整那个命令......所以:不完美。
有什么想法吗?
谢谢!
答案 0 :(得分:6)
在正则表达式中,你可以使用一个否定的字符类,在要被否定的字符之前添加一个克拉^
,它将完全符合你的要求:
replace($x/ID, '[^A-Za-z_0-9]', ''))