以下是一个例子:
S = “abcd+subtext@example.com”
s.match(/ + [^ @] * /)
结果=> “+潜台词”
问题是,我不想在那里加入“+”。我希望结果是“subtext”,没有+
答案 0 :(得分:5)
您可以在正则表达式中使用括号来创建匹配组:
s="abcd+subtext@example.com"
s =~ /\+([^@]*)/ && $1
=> "subtext"
答案 1 :(得分:2)
你可以使用一个积极的lookbehind断言,我认为这是这样写的:
s.match(/(?<=\+)[^@]*/)
编辑:所以我只是注意到这是一个Ruby问题,我不知道这个功能是否在Ruby中(我自己不是Ruby程序员)。如果是,你可以使用它;如果没有......我会删除它。
答案 2 :(得分:2)
答案 3 :(得分:1)
我不太了解Ruby,但是如果你在你想要的部分附加捕获它应该工作。即:\+([^@]*)
您可以使用Rubular测试这些。此特定匹配位于:http://www.rubular.com/r/pqFza9jlmX