【发布时间】:2014-08-29 07:51:43
【问题描述】:
是否有任何优雅的解决方案来构建可变长度的后视正则表达式,例如这个?
/(?<=eat_(apple|pear|orange)_)today|yesterday/g;
似乎 Perl 有一个非常令人印象深刻的正则表达式引擎,可变长度的后视会非常有趣。有没有办法让它发挥作用,还是我应该忘记这个坏主意?
【问题讨论】:
-
您是否只想匹配
today或yesterday之后的eat_apple或eat_pear或eat_orange -
/((?<=eat_apple_)|(?<=eat_pear_)|(?<=eat_orange_))today|yesterday/g今天当然可以做到这一点,但它远没有我们想要的优雅。真正的限制是具有 *s 和 +s 或其他广泛长度范围的匹配器。我的理解是 .NET 的实现通过反转模式和字符串来解决这个问题。