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

use*_*578 1 regex 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> 
Run Code Online (Sandbox Code Playgroud)

这给了我:

myStr: D_CELCI_LISA
myStr2: CELCI
Run Code Online (Sandbox Code Playgroud)

Ada*_*ron 5

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

myStr2 = listGetAt(myStr, 2, "_");
Run Code Online (Sandbox Code Playgroud)

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

myStr2 = reReplace(myStr, "^.*_([^_]+)_.*$", "\1", "all");
Run Code Online (Sandbox Code Playgroud)

  • @user2429578 - 另外,看看“getToken”(在字符串函数下)。它的作用类似于“listGetAt”,但如果列表元素不存在,它不会抛出错误。 (2认同)