[英]Extracting arguments using regular expressions
我正在嘗試使用正則表達式將函數定義中的參數提取到數組中。 例如
func(a) -> ['a']
func(a,b) -> ['a','b']
func(a, b) -> ['a','b']
下面的正則表達式正確匹配參數塊
/\((?:(\w+),?\s*)+\)/
但是,僅返回最后匹配的捕獲組,即結果為:
func(a) -> ['a']
func(a,b) -> ['b']
func(a,b,c) -> ['c']
這似乎是用於捕獲重復單元的一部分的通常有用的模式。 有沒有辦法正確達到預期的結果?
我保存的regexr會話可以在這里找到
你可以得到這樣的參數:
var s = "func(a, b, c )"; var res = s.substring(s.indexOf("(") + 1, s.indexOf(")")).split(/\\s*,\\s*/g); alert(res);
如果你有像樣本輸入中那樣的獨立字符串,這將有效。
我嘗試添加的另一種方法是使用/\\(([^()]+)\\)/
regex提取括號組,然后用.split(/\\s*,\\s*/g)
/\\(([^()]+)\\)/
拆分捕獲的組1內容.split(/\\s*,\\s*/g)
。
正則表達式/\\((\\w+(?:,\\s?\\w+)?)\\)/
將返回a, b
表示func(a, b)
,以及a,b,c
表示func(a,b,c)
希望這是你想要的,取決於你正在做什么語言,你可以簡單地將它們分開,
將它們放入一個數組中以便以后編制索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.