2010-07-13 187 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用正则表达式玩耍。使调试更容易。

相关问题