簡體   English   中英

XQuery中特殊字符的正則表達式

[英]Regex for Special Characters in XQuery

嗨,我是一名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

提前致謝。

無需使用正則表達式即可從黑名單中刪除某些字符,只需使用translate(...)

translate($string, '-$`,:%!@#_|]$?~@#!%:;=_+*.-+= ?;', '')

不過,我沒有清理字符列表。

正則表達式的問題是列表中的破折號: [$`,:%!@#_-|] 此正則表達式阻止從_ (字符95)到|所有字符| (字符124)。 這包括所有小寫字母! 始終將破折號放在前面: [-$`,:%!@#_|]

無論如何:如果可能,最好使用白名單。 您將永遠忘記一些字符。 大括號呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM