我想从这段代码中提取变量名称:
var a,b,c, foo = "Test this is string";
我希望匹配结果包含a,b,c和foo以及值。 我可以用逗号分隔字符串,但我想知道是否有直接来自正则表达式的方法。
var\s+(.+)\s*,?\s*=.+;
您可以在http://rubular.com/进行测试
它向我展示了a,b,c,foo
部分,但我希望在匹配组中输出:
答案 0 :(得分:1)
答案 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