匹配模式regex coldfusion

匹配模式regex coldfusion,regex,coldfusion,pattern-matching,Regex,Coldfusion,Pattern Matching,我需要使用reMatchNoCase(((listid)”,“listid car van listid dog cat listid house house house hotel”)>匹配一个模式,这样listid就是这个模式,并且将所有内容都匹配到下一个模式,即listid。 因此,如果我转储重新匹配,我将得到一个结构,每个结构都以listid和其中的内容开头 这就是它应该看起来的样子 利斯蒂德轿车 猫狗 利斯蒂德之家酒店 等等 当我使用reMatchNoCase(“(listid)”,“

我需要使用
reMatchNoCase(((listid)”,“listid car van listid dog cat listid house house house hotel”)>
匹配一个模式,这样listid就是这个模式,并且将所有内容都匹配到下一个模式,即listid。
因此,如果我转储重新匹配,我将得到一个结构,每个结构都以listid和其中的内容开头

这就是它应该看起来的样子

  • 利斯蒂德轿车

  • 猫狗

  • 利斯蒂德之家酒店

  • 等等

    当我使用
    reMatchNoCase(“(listid)”,“listid car van listid dog cat listid house house house hotel”)>
    时,它只会创建一个带有“listid”的结构,而不是像car van那样的结构。。。我应该使用什么正则表达式after(listid)来获取其中的所有内容


    谢谢你可以使用这个正则表达式

    listid.*?(?=(listid|$))
    

    这个正则表达式所做的是定位一个后跟任何字符的“listid”,直到下一个“listid”或“行尾($)”。
    ?=
    是查找下一个“listid”的正向前瞻,但不将其作为匹配的一部分。
    *?
    中的
    避免了
    *
    的贪婪行为,并匹配下一个前向字符串。

    您可以使用此正则表达式

    listid.*?(?=(listid|$))
    

    这个正则表达式所做的是定位一个后跟任何字符的“listid”,直到下一个“listid”或“行尾($)”。
    ?=
    是查找下一个“listid”的正向前瞻,但不将其作为匹配的一部分。
    *?
    中的
    避免了
    *
    的贪婪行为,并匹配下一个前向字符串。

    这个正则表达式可能会这样做;我不知道coldfusion的详细信息,但它符合您的要求:

    listid.*?(?=$|\slistid)
    

    这个正则表达式可能就可以了;我不知道coldfusion的详细信息,但它符合您的要求:

    listid.*?(?=$|\slistid)
    

    我需要$newline做什么?如果我不想的话,它会不会被一条真正的新线搞砸呢?因为结尾没有“listid”,我们必须要有一些东西来预测最后一场比赛。因此使用了“$”。如果您删除它,它将与您示例中的“listid house hotel”不匹配。我不知道它在coldfusion中是如何实现的,但通常语言提供了一种在“多行”模式下支持正则表达式的方法。你可以试试看。此外,regex还有一个修饰符“/m”,如果遇到任何问题,您可以尝试使用它。cf使用apacheoro regex引擎,它支持
    (?m)
    内联修饰符。或者,只需使用
    \z
    而不是
    $
    ,以避免担心换行符,并且只在字符串末尾匹配。哦,而且前瞻中不需要括号。我需要$newline做什么?如果我不想的话,它会不会被一条真正的新线搞砸呢?因为结尾没有“listid”,我们必须要有一些东西来预测最后一场比赛。因此使用了“$”。如果您删除它,它将与您示例中的“listid house hotel”不匹配。我不知道它在coldfusion中是如何实现的,但通常语言提供了一种在“多行”模式下支持正则表达式的方法。你可以试试看。此外,regex还有一个修饰符“/m”,如果遇到任何问题,您可以尝试使用它。cf使用apacheoro regex引擎,它支持
    (?m)
    内联修饰符。或者,只需使用
    \z
    而不是
    $
    ,以避免担心换行,并且只在字符串末尾匹配。哦,而且前瞻中不需要括号。