2014-07-23 85 views
0

我使用正則表達式(在ColdFusion中)用連字符替換非字母數字字符,如何去掉最後的連字符

#REReplace("MyString (NewString)", "[^a-z0-9]", "-")# 

因爲在串)閉合托架也被轉換爲連字符-,我得到的後連字符,我想刪除。而不是這個MyString-NewString-我想要MyString-NewString

匹配尾隨連字符的正則表達式模式是什麼?我認爲這是(.*)-?,但它不適合我。顯然,我嵌套了幾個REReplace函數來獲得我想要的結果,但無法得到正確的正則表達式模式。

回答

1

你的圖案匹配一個連字符後會是

-$ 

$anchor匹配字符串的結尾。

+0

我似乎無法得到它匹配。我得到這個錯誤:'格式錯誤的正則表達式「[^(。*) - $]」' –

+0

我把你需要的完整正則表達式放在我的答案中。你爲什麼把括號和其他東西放在它周圍? – stema

+0

'[^(。*) - $]'是否定字符類,它匹配除「(」,「。」,「*」和範圍從「)」到「$」之外的任何內容。範圍可能是非法的,因此錯誤 – stema

1
  1. 首先刪除空字符串的所有尾隨特殊字符。並將最終結果存儲到一個字符串變量中。

    正則表達式:[^a-zA-Z0-9]$替換字符串= ""

  2. 現在更換-

    正則表達式的一個或多個特殊字符:[^a-zA-Z0-9]+替換字符串= "-"

+0

但是最後的右括號)不應該是' - ' –

+0

是的。刪除所有結尾的特殊字符。所以最後的')'將會消失。 –

+1

感謝這Avinash,但它不是我所需要的。我正在做其他替代品以替換帶連字符的空格。這只是我想要刪除的最後一個連字符。爲您的努力投了贊成票。 –