Ruby匹配JavaScript变量组

时间:2015-06-26 11:01:05

标签: ruby regex

我想从这段代码中提取变量名称:

var a,b,c,  foo = "Test this is string";

我希望匹配结果包含a,b,c和foo以及值。 我可以用逗号分隔字符串,但我想知道是否有直接来自正则表达式的方法。

var\s+(.+)\s*,?\s*=.+;

您可以在http://rubular.com/进行测试 它向我展示了a,b,c,foo部分,但我希望在匹配组中输出:

  1. 一个
  2. B'/ LI>
  3. C
  4. FOO

2 个答案:

答案 0 :(得分:1)

您可以使用以下基于外观的正则表达式。

string.scan(/(?<=[\s,])\w+(?=,?[^="']*=)/)

DEMO

答案 1 :(得分:1)

您可以添加更多捕获组以按照您希望的方式捕获字符串的所有部分:

var\s+(\w+),(\w+),(\w+),\s*(\w+)\s*=.+;

demo的输出:

1.  a
2.  b
3.  c
4.  foo

请注意,如果存在非指定数量的参数,则无效。

作为替代方法,使用强制连续匹配的\G正则表达式:

(?:var\s+|(?<!^)\G)[,\s]*(\w+)

another demo的输出:

Match 1
1.  a
Match 2
1.  b
Match 3
1.  c
Match 4
1.  foo