1

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

2 回答 2

5

如果它真的像获取第一个和第二个下划线字符之间的文本一样简单,那么您不需要正则表达式。这会做到:

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

也就是说,这应该适用于该上下文中的正则表达式:^.*_([^_]+)_.*$,例如:

myStr2 = reReplace(myStr, "^.*_([^_]+)_.*$", "\1", "all");
于 2013-07-16T15:07:28.190 回答
0

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

于 2013-07-16T18:12:22.510 回答