在两个字符之间获取字符串 - Coldfusion

问题描述:

我正在用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 

如果真的是为获得第一和第二下划线的文本一样简单,你不需要一个正则表达式。这会做到这一点:

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”是具有给定分隔符的任何字符串(默认为一个逗号) –

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