在两个字符之间获取字符串 - 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");
答
@ user2429578 ListLast()和ListFirst()最后或列表的第一个元素。
这是神奇的。非常感谢。我可以在7分钟内接受答案。 – user2429578
只是最后一个问题,说我想要在最后一个下划线后面的字符串,我会怎么做呢?例如d_celci_cellu,我想要cellu – user2429578
listGetAt(myStr,“_”)将是最简单的。有一堆列表函数:http://help.adobe.com/en_US/ColdFusion/10.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec1a60c-7ffc.html#WSc3ff6d0ea77859461172e0811cbec22c24-6a42(其中“list”是具有给定分隔符的任何字符串(默认为一个逗号) –