Ruby正则表达式在@符号后获取用户名

时间:2018-09-19 06:40:14

标签: ruby regex

如何获取不带@符号的用户名? 这就是@和任何非单词字符之间的全部内容。

message = <<-MESSAGE
From @victor with love,
To @andrea,
and CC goes to @ghost
MESSAGE

我尝试使用Ruby正则表达式

username_pattern = /@\w+/

我想得到以下输出

message.scan(username_pattern)
#=> ["victor", "andrea", "ghost"]

4 个答案:

答案 0 :(得分:3)

回头看

(?<=@)\w+

这将保留@符号regex

答案 1 :(得分:1)

我会选择:

message.scan(/(?<=@)\w+/)
#=> ["victor","andrea","ghost"]

您可能想阅读有关look-behind regexp的信息。

答案 2 :(得分:1)

您可以匹配@,然后在capturing group中捕获单词字符一次或多次

@(\w+)

username_pattern = /@(\w+)/

Regex demo

答案 3 :(得分:0)

尝试一下

irb(main):010:0> message.scan(/@(\w+)/m).flatten
=> ["victor", "andrea", "ghost"]