首页
学习
活动
专区
圈层
工具
发布

Coldfusion
EN

Stack Overflow用户
提问于 2013-11-22 17:17:22
回答 1查看 268关注 0票数 4

我有一个巨大的字符串list (我将将示例限制为一行),其格式如下:

代码语言:javascript
复制
"[First Name] [Last Name] <[email address]>"

我在字符串上运行了一个正则表达式,将其分隔为一个数组。

代码语言:javascript
复制
<cfset x = REMatch("<(.*?)>",list) />

这很好,只是它还返回电子邮件地址周围的角括号<>

代码语言:javascript
复制
x[1] = <[email address]>

为了简单起见,因为cfdocs是相当模糊的regex,我编写了这个循环来删除每个索引的第一个和最后一个字符。

代码语言:javascript
复制
<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>

这很好,耶,我现在有我的阵列了。

不过,这不是我想要的。如何返回电子邮件地址,而不包括在第一位的角括号?

(请注意,我也尝试过REReplaceREFind只返回事件的索引)

(还请注意,字符串中没有[]括号,这只是表示里面的值不是我在这里发布的)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-22 18:17:47

Coldfusion实现了一个正则表达式(Apache,详情见此答案。),它不支持查找后断言,在本例中很有用。

但我们可以得出一个近似的结论:

代码语言:javascript
复制
<cfset x = REMatch("[^<>]+(?=>)",list) />

应该工作,只要所有尖括号发生在非嵌套,平衡对。

解释:

代码语言:javascript
复制
[^<>]+  # Match one or more characters except angle brackets
(?=>)   # Make sure the next character is a closing angle bracket
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20150721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档