ruby,使用正则表达式在两个字符串之间找到一些东西

AnA*_*ice 15 ruby regex

使用Ruby + regex,给出:

starting-middle+31313131313@mysite.com

我想获得: 31313131313

即,starting-middle+和之间是什么mysite.com

这是我到目前为止所拥有的:

to = 'starting-middle+31313131313@mysite.com'

to.split(/\+/@mysite.com.*/).first.strip
Run Code Online (Sandbox Code Playgroud)

Nak*_*lon 30

在第1 +和第1之间@:

to[/\+(.*?)@/,1]
Run Code Online (Sandbox Code Playgroud)

在第1 +和最后@:

to[/\+(.*)@/,1]
Run Code Online (Sandbox Code Playgroud)

在最后+和最后之间@:

to[/.*\+(.*)@/,1]
Run Code Online (Sandbox Code Playgroud)

从最后一点+到第一点@:

to[/.*\+(.*?)@/,1]
Run Code Online (Sandbox Code Playgroud)

  • @ stack1,是的,它是第一个`()`**里面的**.就像`.match(//)[1]`或`.match(//).group(1)`在其他一些语言中.通常你在应用正则表达式时检索单个子字符串,所以`,1`在Ruby中很常见. (2认同)

Pow*_*ers 5

这是一个没有正则表达式的解决方案(对我来说更容易阅读):

i = to.index("+")
j = to.index("@")
to[i+1..j-1]
Run Code Online (Sandbox Code Playgroud)