我正在使用reMatch
从列表中获取匹配的子字符串。但是当我使用前缀环视时,我收到了错误。
序列(?< ...)无法识别
代码:
<cfset local.path = "schedule.category.classes.name,schedule.category.classes.id">
<cfset local.regex = "(?<=schedule.category.classes.)[a-zA-Z0-9_]*?(?=,|$)">
<cfset local.output = reMatch(local.regex, local.path)>
我错过了什么?
答案 0 :(得分:4)
你错过了阅读文档的内容;-) - Regular expression syntax - Using special characters - 看看背后&amp; CFML的正则表达式(长期死亡Apache ORO)不支持arounds。
然而,使用java的正则表达式实现很容易, 支持后视:java.util.regex.Pattern - Special constructs (named-capturing and non-capturing)。
我已经编写了关于在CFML中使用Java正则表达式的三部分系列的两部分:“Regular expressions in CFML (part 9: Java support for regular expressions (1/3))”。我必须在某个时候回到第3部分,但无论如何你需要的是第一部分。
Ben Nadel还撰写了大量关于在CFML中使用Java正则表达式的文章。如果你因为看了@我的笔记而陷入困境,那就去做一个快速的谷歌(但如果你这样做,请告诉我你被困的地方,所以我可以重新审视我的措辞!)。
答案 1 :(得分:1)