社区首页 >问答首页 >ruby,使用正则表达式查找两个字符串之间的内容

ruby,使用正则表达式查找两个字符串之间的内容
EN

Stack Overflow用户
提问于 2010-11-18 20:00:24
回答 4查看 15.5K关注 0票数 16

使用Ruby + regex,给定:

starting-middle+31313131313@mysite.com

我只想获取:31313131313

也就是说,starting-middle+mysite.com之间有什么关系

这是我到目前为止所知道的:

代码语言:javascript
代码运行次数:0
复制
to = 'starting-middle+31313131313@mysite.com'

to.split(/\+/@mysite.com.*/).first.strip
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-18 20:06:28

在第1个+和第1个@之间

代码语言:javascript
代码运行次数:0
复制
to[/\+(.*?)@/,1]

在第一个+和最后一个@之间

代码语言:javascript
代码运行次数:0
复制
to[/\+(.*)@/,1]

在last +和last @之间

代码语言:javascript
代码运行次数:0
复制
to[/.*\+(.*)@/,1]

在最后一个+和第一个@之间

代码语言:javascript
代码运行次数:0
复制
to[/.*\+(.*?)@/,1]
票数 34
EN

Stack Overflow用户

发布于 2014-02-11 20:20:11

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

代码语言:javascript
代码运行次数:0
复制
i = to.index("+")
j = to.index("@")
to[i+1..j-1]
票数 5
EN

Stack Overflow用户

发布于 2018-10-31 23:54:37

如果你关心可读性,我建议只使用"split",就像这样: string.split("from").last.split(" to ").first或者,在你的例子中:

to.split("+").last.split("@").first

如果'+‘或'@’出现次数较多,则使用限制2,以便只关心第一次出现的情况: to.split("+",2).last.split("@",2).first

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4218986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文