regex - Coldfusion 正则表达式

标签 regex arrays coldfusion

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

"[First Name] [Last Name] <[email address]>"

我在字符串上运行了一个正则表达式来将它分隔成一个数组。
<cfset x = REMatch("<(.*?)>",list) />

这工作正常,除了它还返回尖括号 <>在电子邮件地址周围
x[1] = <[email address]>

只是为了简单起见,因为 cfdocs 正则表达式非常模糊,我写了这个循环来删除每个索引的第一个和最后一个字符..
<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 只返回发生的索引)

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

最佳答案

Coldfusion 实现了不支持 see this answer for details 的正则表达式风格(Apache ORO,lookbehind assertions)这在这种情况下会很有用。

但我们可以得出一个近似值:

<cfset x = REMatch("[^<>]+(?=>)",list) />

只要所有尖括号都以未嵌套的平衡对出现,就应该可以工作。

说明:
[^<>]+  # Match one or more characters except angle brackets
(?=>)   # Make sure the next character is a closing angle bracket

关于regex - Coldfusion 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20150721/

相关文章:

regex - sed:删除第一个字母数字字符之前的所有字符

rest - ColdFusion 10 RESTful Web 服务无法接收 gzip 压缩(二进制)正文

model-view-controller - CFWheels - 过滤器问题 'except'。冲突的 Action 名称

regex - grep 命令找出任何字符后跟 '.' 的次数

PHP preg_replace问题

java - 匹配字符序列的正则表达式

c# - 可以使用 Interlocked.CompareExchange with a Bit 吗?

Javascript算法实践去除数组中的负数

c# - 如何从 C# 中的 Object[] 中删除特定类型的变量

xml - 给定键值的 XPath?