我有一个巨大的字符串list (我将将示例限制为一行),其格式如下:
"[First Name] [Last Name] <[email address]>"我在字符串上运行了一个正则表达式,将其分隔为一个数组。
<cfset x = REMatch("<(.*?)>",list) />这很好,只是它还返回电子邮件地址周围的角括号<>。
x[1] = <[email address]>为了简单起见,因为cfdocs是相当模糊的regex,我编写了这个循环来删除每个索引的第一个和最后一个字符。
<cfloop from="1" to="#arrayLen(x)#" index="y">
<cfset a = #RemoveChars(x[y], 1, 1)# />
<cfset a = #left(a,len(a)-1)# />
<cfset x[y] = a />
</cfloop>这很好,耶,我现在有我的阵列了。
不过,这不是我想要的。如何返回电子邮件地址,而不包括在第一位的角括号?
(请注意,我也尝试过REReplace和REFind只返回事件的索引)
(还请注意,字符串中没有[]括号,这只是表示里面的值不是我在这里发布的)
发布于 2013-11-22 18:17:47
Coldfusion实现了一个正则表达式(Apache,详情见此答案。),它不支持查找后断言,在本例中很有用。
但我们可以得出一个近似的结论:
<cfset x = REMatch("[^<>]+(?=>)",list) />应该工作,只要所有尖括号发生在非嵌套,平衡对。
解释:
[^<>]+ # Match one or more characters except angle brackets
(?=>) # Make sure the next character is a closing angle brackethttps://stackoverflow.com/questions/20150721
复制相似问题