2013-07-16 80 views
0

我正在用ColdFusion掙扎(而不是我寫的語言)。在兩個字符之間獲取字符串 - Coldfusion

我想做一個正則表達式來獲取字符串的一部分。 因此,例如,如果我的字符串是:D_CECILA23_CEC23423 我希望位於兩個下劃線之間的部分。

這是我到目前爲止的代碼,它適用於任何字母字符,但是當一個數字被投入混合時,它就會中斷。

<cfset myStr = "D_CELCI_LISA"> 
<cfset myStr2 = reReplace(myStr, "([\w\d\%]+)(\_)([/ A-Z]+)(\_)([\w\d\?]+)", "\3", "all")  > 

<cfoutput> 
myStr: #myStr#<br /> 
myStr2: #myStr2#<br /> 
</cfoutput> 

這給了我:

myStr: D_CELCI_LISA 
myStr2: CELCI 

回答

4

如果真的是爲獲得第一和第二下劃線的文本一樣簡單,你不需要一個正則表達式。這會做到這一點:

myStr2 = listGetAt(myStr, 2, "_"); 

也就是說,這應該在這方面正則表達式做:^.*_([^_]+)_.*$,如:

myStr2 = reReplace(myStr, "^.*_([^_]+)_.*$", "\1", "all"); 
+0

這是神奇的。非常感謝。我可以在7分鐘內接受答案。 – user2429578

+0

只是最後一個問題,說我想要在最後一個下劃線後面的字符串,我會怎​​麼做呢?例如d_celci_cellu,我想要cellu – user2429578

+0

listGetAt(myStr,「_」)將是最簡單的。有一堆列表函數:http://help.adobe.com/en_US/ColdFusion/10.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec1a60c-7ffc.html#WSc3ff6d0ea77859461172e0811cbec22c24-6a42(其中「list」是具有給定分隔符的任何字符串(默認爲一個逗號) –

0

@ user2429578 ListLast()和ListFirst()最後或列表的第一個元素。

相關問題