【发布时间】:2016-01-23 14:07:16
【问题描述】:
我正在寻找一种方法,无论是在 Ruby 还是 Javascript 中,它都会在一个字符串中针对正则表达式提供所有匹配项,可能是重叠的。
假设我有str = "abcadc",我想找到a 后跟任意数量的字符,然后是c。我正在寻找的结果是["abc", "adc", "abcadc"]。关于如何实现这一点的任何想法?
str.scan(/a.*c/) 会给我["abcadc"],str.scan(/(?=(a.*c))/).flatten 会给我["abcadc", "adc"]。
【问题讨论】:
-
读者:第一句话清楚地表明,需要的是一个调用
all_matches(string, regex)的方法,它适用于任意字符串和正则表达式。 -
通常使用正则表达式引擎,匹配是“最左边最长”的,除非你指定一个非贪婪量词,你会得到“最左边最短”匹配。您不能真的期望在一个表达式中同时获得最短和最长的表达式。得到所有最短的,然后找到串联的所有排列将是最好的策略。
-
@theTinMan,最初的问题是关于给定正则表达式的匹配问题,这只是一个带有“让我们说”的例子。编辑后,这个特定的正则表达式匹配看起来像是问题的重点。我不同意你的修改。
-
随意编辑。这就是 SO 的工作原理。不过,“让我们说”是虚构的。我们正在处理编程并创建一本关于 SO 的参考书,所以推测很少是合适的。
标签: javascript ruby regex