簡體   English   中英

使用正則表達式提取參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM