您好我是一名java开发人员,从最近几天开始我正在开发OSB。我需要从字符串中删除所有空格字符。为此我尝试了Assign
块中的代码。
if(exists($Variable) and not(empty($Variable/text())))then
fn:replace(fn:replace(fn:replace(fn:replace(
fn:replace($Variable/text(),'[$`,:%!@#_-|]',''),
'[$?~@#!%:;=_+*]', ''), '[.]', ''), '[-]', ''), '[+= ?;]', '')
else
$Variable
但我想在一个Regex中做到这一点。所有这些字符都不在单个Regex字符串中。有没有办法在单个正则表达式字符串中执行此操作?
我找到了一个方法functx:escape-for-regex
,但它无效。目前我正在使用Oracle 10g。
我想要这样的事情:
"[^\\w-]|[$_-]" //It works in Java
提前致谢。
答案 0 :(得分:1)
正则表达式无需从黑名单中删除某些字符,只需使用translate(...)
:
translate($string, '-$`,:%!@#_|]$?~@#!%:;=_+*.-+= ?;', '')
但我没有清理角色列表。
正则表达式的问题在于列表中的短划线:[$`,:%!@#_-|]
。此正则表达式阻止从_
(字符95)到|
(字符124)的所有字符。这包括所有小写字母!始终先使用短划线:[-$`,:%!@#_|]
。
无论如何:如果可能的话,最好使用白名单。你将永远忘记一些角色。大括号怎么样?