2016-03-07 64 views
0

我想用ColdFusion中的正則表達式用*替換連字號,空格和問號。它看起來像:用星號替換連字符,空格和問號

ReReplace(txt, "-?\s+\?*","*", "All") 

但它不會替換字符串末尾的問號。任何幫助?

+0

什麼是你測試對字符串?嘗試用'\ s *'和'\?*'替換'\ s +'爲'\?+':'「 - ?\ s * \?+」'。或者使用' - ?\ s + \?* | - ?\ s * \?+ $''' –

+1

這樣的替代方式,您能否更新您的問題以更明確地表達您想要匹配的內容?你的敘述不清楚它是否是「任何離散的 - ,[空格]或問號」,或確切的序列「 - ?」,或「任何這些字符的任何數字」等。這些都不清楚鑑於你的敘述和你的示例正則表達式模式之間的脫節。 –

回答

1

爲了使您的代碼更易讀我會寫這樣的:

<cfscript> 
txt = "Hello! testing 1-2-3. How are you?"; 
foo = ReReplace(txt, "[- ?]","*", "All"); 
writeDump(foo); 
</cfscript> 

,將返回:

Hello!*testing*1*2*3*How*are*you* 

字符的範圍(方括號)不需要逃避,這使得它更容易閱讀(無論如何!)。值得注意的是,-是一個範圍內的特殊字符,所以我把它作爲第一個字符。

如果你沒有[ -?]正則表達式將匹配空間?之間的任何字符返回:

Hello**testing*******How*are*you* 
+0

您的建議模式與OP的模式有所不同。你爲什麼認爲它應該有幫助? –

+0

它解決了「我試圖用Coldfusion中的正則表達式替換連字符,空格和問號」的問題,並且我解釋了爲什麼我認爲這是編寫它的更好方法。 –

+0

那麼,這就是爲什麼你添加了感嘆號? OP的正則表達式試圖只匹配*序列中的符號,你的不正確,你的正則表達式將替換複合詞中的連字符。它會破壞字符串,沒有幫助。 –

相關問題