XQuery - 删除所有不是{A-Z,a-z,_,0-9}的字符(非法)

时间:2017-03-17 14:57:53

标签: regex xquery

我需要一个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}

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

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

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

replace($x/ID, '[^A-Za-z_0-9]', ''))