我有一个字符串,其中包含以下模式的重复
/{\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" %}']
答案 0 :(得分:1)
您可以将.match
与贪婪的g
修饰符一起使用,以返回所有匹配的字符串。在你希望捕获的整个事物周围抛出一个引人注目的括号组,并使所有其他组无法捕捉?:
myString.match(/({\s*%\s*assign\s*\w+\s*=\s*(?:["'].*["']|\d+)\s*%\s*})/g);