2012-10-23 32 views

回答

1

那是因爲你需要告訴正則表達式的東西匹配您的逗號和右括號之間,太(或離開它):

/\(([^),]+)/ 

/\(([^),]+)[^)]*\)/ 

正如你可以看到你也不需要逃避角色類中的括號。

+0

我猜u必須有點複雜它;) – Anirudha

+0

我只是試圖保持接近原始的嘗試,使之易於理解。但是,有更好的解決方案;) –

0

希望這可以引導你在正確的方向:

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匹配一切用逗號分解。

正則表達式的其餘部分忽略其它參數,但它可以被修改以包括在他們單獨的組。

2

在這種情況下,你要拿起一部分的模式比你想拋出了部分的模式要簡單得多。

"TEST(10,20,30)"[/\d+/] # => 10 
1

我怎麼能拉動剛走出10此字符串。

使用lookaheadlookbehind

(?<=\()\d+(?=,) 

工作here

相關問題