gpt4 book ai didi

正则表达式查找内容问题

转载 作者:行者123 更新时间:2023-12-02 10:22:50 26 4
gpt4 key购买 nike

尝试使用正则表达式 refind 标签在本示例中使用 Coldfusion 查找括号内的内容

 joe smith <joesmith@domain.com>

结果文本应该是

 joesmith@domain.com

使用这个

<cfset reg = refind(
"/(?<=\<).*?(?=\>)/s","Joe <joe@domain.com>") />

没有任何运气。有什么建议吗?

也许是语法问题,它在我使用的在线正则表达式测试器中有效。

最佳答案

您不能将lookbehind与CF的正则表达式引擎一起使用(使用 Apache Jakarta ORO )。

但是,您可以使用 Java's regex不过,它确实支持它们,并且我创建了一个包装器 CFC,使这变得更加容易。可从: http://www.hybridchill.com/projects/jre-utils.html

(更新:上面提到的包装器 CFC 已发展成为一个完整的项目。有关详细信息,请参阅 cfregex.net 。)

此外,/.../s 的内容在这里不是必需的/相关的。

因此,根据您的示例,但使用改进的正则表达式:

<cfset jrex = createObject('component','jre-utils').init()/>

<cfset reg = jrex.match( "(?<=<)[^<>]+(?=>)" , "Joe <joe@domain.com>" ) />


快速说明一下,因为我已经更新了该正则表达式几次;希望现在处于最佳状态...

(?<=<) # positive lookbehind - start matching at `<` but don't capture it.
[^<>]+ # any char except `<` or `>`, the `+` meaning one-or-more greedy.
(?=>) # positive lookahead - only succeed if there's a `>` but don't capture it.

关于正则表达式查找内容问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3046437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com