匹配重复模式

时间:2015-09-13 18:56:48

标签: javascript regex string

我有一个字符串,其中包含以下模式的重复

/{\s*%\s*assign\s*\w+\s*=\s*((("|').*("|'))|\d+)\s*%\s*}/

上述模式的重复可以用空格(零或更多)和换行符(零或更多)分隔

是否有正则表达式可以返回上述所有重复的数组?

我认为由于.*我已经包含在我的模式中,这使得事情变得不可能了?

如果我的模式难以阅读,我基本上试图解析一个可能具有以下值的字符串:

    {% assign some_Variable_Name1 = "http://www.some/value.come" %}
{% assign some_Variable_Name_2 = "http://www.some/value.com.jpg" %} {% assign some_Variable_Name_5 = "http://www.some/value.com.jpg" %}
{% assign some_Variable_Name_3 = 1234 %}


{% assign some_Variable_Name_7 = "http://www.s'ome'/value.com.jpg" %}

基于上面的例子,我想获得以下数组:

['{% assign some_Variable_Name1 = "http://www.some/value.come" %}',
 '{% assign some_Variable_Name_2 = "http://www.some/value.com.jpg" %}',     
 '{% assign some_Variable_Name_5 = "http://www.some/value.com.jpg" %}',
 '{% assign some_Variable_Name_3 = 1234 %}',
 '{% assign some_Variable_Name_7 = "http://www.s'ome'/value.com.jpg" %}']

1 个答案:

答案 0 :(得分:1)

您可以将.match与贪婪的g修饰符一起使用,以返回所有匹配的字符串。在你希望捕获的整个事物周围抛出一个引人注目的括号组,并使所有其他组无法捕捉?:

myString.match(/({\s*%\s*assign\s*\w+\s*=\s*(?:["'].*["']|\d+)\s*%\s*})/g);

https://regex101.com/r/jF2fR9/1