2014-07-23 51 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,但它不是我所需要的。我正在做其他替代品以替换带连字符的空格。这只是我想要删除的最后一个连字符。为您的努力投了赞成票。 –