coldfusion - 使用 REFind 查找字符串中的多次出现

标签 coldfusion coldfusion-10

我试图让 ColdFusion 的 REFindNoCase 函数返回匹配字符串的多个实例,但似乎无法让它工作:

<cfset string2test="cfid skldfjskdl cfid sdlkfjslfjs cftoken dslkfjdslfjks cftoken">
<cfset CookieCheck =  REFindNoCase( 'CFTOKEN', string2test, 1, true)>
<cfif arrayLen( CookieCheck['LEN'] ) gt 1>
    MULTIPLE CFTOKEN!
</cfif>

是否需要使用正则表达式魔术语法来使其搜索超过 1 个?

最佳答案

上述代码的语法将为模式匹配和子表达式创建包含数组 (LEN,POS) 的结构。 RegEx 子表达式在模式的括号内。 “CFTOKEN”模式不包含子表达式。

我不认为 REFindNoCase 会完成您想要完成的事情。

例如,如果您使用 '.*?(cftoken)' 作为模式:

<cfset CookieCheck =  REFindNoCase('.*?(CFTOKEN)', string2test, 1, true)>

(CFTOKEN) 是一个子表达式。如果删除“?”,将返回最后一次出现的“cftoken”的信息。

第一个数组项中的值将匹配整个模式,直到第一个“cftoken”(字符串的前 40 个字符)。第二组值将标识在第一个匹配项(前 40 个字符)中找到的“cftoken”字符串。

因为示例中的语句不包含子表达式,所以只返回第一个模式匹配。

如果您需要检查某个内容是否被多次列出或者您不需要操作原始字符串,我建议使用 REMatchNoCase()。它返回一个模式匹配数组,但没有位置信息。

关于coldfusion - 使用 REFind 查找字符串中的多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727452/

相关文章:

web-services - 无法读取 WSDL 错误

coldfusion - 在 CFBuilder 中创建服务器后 RDS 发生故障

coldfusion - 在coldfusion中提取7z文件

coldfusion - 使用 Coldfusion 将事件写入 Windows 事件日志

java - 更新到 Java 8 v 60 后出现 CF10 Web 服务错误

java - 使用 ColdFusion 或 Java 从 ".sql"文件构建 MSSQL 数据库?

api - PayPal API OAuth2 I/O 异常 : peer not authenticated

json - 如何停止 Content-Length header 截断 REST 服务中的短 JSON 片段

Coldfusion Query 循环适用于 cf10 但不适用于 9

url - 是否可以使用 ColdFusion 重写 url?