如果我有事一個字符串,它看起來像「TEST(10,20,30)」我將如何能夠拉剛走出10此字符串。類似於解析函數參數的正則表達式例如FOO(VAR,酒吧)並獲得VAR在Ruby中
我已經試過
/\(([^\)]+)\)/
,並且得到括號內,但是當我索引樹在一個逗號例如添加
/\(([^\),]+)\)/
然後沒有任何匹配。
如果我有事一個字符串,它看起來像「TEST(10,20,30)」我將如何能夠拉剛走出10此字符串。類似於解析函數參數的正則表達式例如FOO(VAR,酒吧)並獲得VAR在Ruby中
我已經試過
/\(([^\)]+)\)/
,並且得到括號內,但是當我索引樹在一個逗號例如添加
/\(([^\),]+)\)/
然後沒有任何匹配。
那是因爲你需要告訴正則表達式的東西匹配您的逗號和右括號之間,太(或離開它):
/\(([^),]+)/
或
/\(([^),]+)[^)]*\)/
正如你可以看到你也不需要逃避角色類中的括號。
希望這可以引導你在正確的方向:
irb(main):001:0> str = "TEST(10,20,30)"
=> "TEST(10,20,30)"
irb(main):002:0> str =~ /\w+\(([^,]+),.+\)/
=> 0
irb(main):003:0> $~[1]
=> "10"
正則表達式做到這一點:
\ w +
一個或多個單詞字符( 「TEST」)
(([^,] +)
A組爲任何不是逗號,這將來自左PA匹配一切用逗號分解。
正則表達式的其餘部分忽略其它參數,但它可以被修改以包括在他們單獨的組。
在這種情況下,你要拿起一部分的模式比你想拋出了部分的模式要簡單得多。
"TEST(10,20,30)"[/\d+/] # => 10
我猜u必須有點複雜它;) – Anirudha
我只是試圖保持接近原始的嘗試,使之易於理解。但是,有更好的解決方案;) –