正则表达式 - 排除字符

时间:2010-07-13 19:26:17

标签: ruby regex

以下是一个例子:

  

S = “abcd+subtext@example.com”

     

s.match(/ + [^ @] * /)

     

结果=> “+潜台词”

问题是,我不想在那里加入“+”。我希望结果是“subtext”,没有+

4 个答案:

答案 0 :(得分:5)

您可以在正则表达式中使用括号来创建匹配组:

s="abcd+subtext@example.com"
s =~ /\+([^@]*)/ && $1
=> "subtext"

答案 1 :(得分:2)

你可以使用一个积极的lookbehind断言,我认为这是这样写的:

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

编辑:所以我只是注意到这是一个Ruby问题,我不知道这个功能是否在Ruby中(我自己不是Ruby程序员)。如果是,你可以使用它;如果没有......我会删除它。

答案 2 :(得分:2)

这对我有用:

\+([^@]+)

我喜欢用Rubular来玩正则表达式。使调试变得更容易。

答案 3 :(得分:1)

我不太了解Ruby,但是如果你在你想要的部分附加捕获它应该工作。即:\+([^@]*)

您可以使用Rubular测试这些。此特定匹配位于:http://www.rubular.com/r/pqFza9jlmX