2010-07-13 233 views

回答

5

您可以使用括號在正則表達式來創建匹配組:

s="[email protected]" 
s =~ /\+([^@]*)/ && $1 
=> "subtext" 
+9

另一個語法,這是單曲[/ \ +([^ @] *)/ 1]'。 – mckeed 2010-07-13 19:38:16

+2

@mckeed,我不知道。非常好! – 2010-07-13 19:40:38

+0

謝謝大家!這些僅適用於紅寶石嗎?另外,&&代表什麼? – 2010-07-14 01:21:29

2

你可以使用一個積極的向後斷言,我相信是這樣寫的:

s.match(/(?<=\+)[^@]*/) 

編輯:所以我才注意到這是一個Ruby問題,我不知道這個功能是否在Ruby中(我本人不是Ruby程序員)。如果是的話,你可以使用它;如果沒有...我會刪除這個。

+2

這將工作僅在紅寶石1.9+ – mckeed 2010-07-13 19:36:23

1

我不知道紅寶石非常好,但如果添加了部分的周圍捕獲你想它應該工作。即:\+([^@]*)

你可以用Rubular測試這些。這種特殊的比賽是在這裏:http://www.rubular.com/r/pqFza9jlmX

2

這個工作對我來說:

\+([^@]+) 

我喜歡用Rubular用正則表達式玩耍。使調試更容易。

相關問題