首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式匹配不是Ruby中的

正则表达式匹配不是Ruby中的
EN

Stack Overflow用户
提问于 2011-03-05 12:30:31
回答 2查看 718关注 0票数 0

给定如下文本:

代码语言:javascript
复制
body = 

yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada yada 
< via mobile device > 

Yada Yada <xxxxx@xxxxx.com> wrote:

yada yada yada yada yada yada yada yada yada 

我想匹配第二段,所以我这样做:

代码语言:javascript
复制
body = body.split(/.* <xxxxx@xxxxx.com> wrote: .*/m).first

但这在ruby中是不匹配的,即使它在Rubular中也是如此。你知道为什么吗?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-05 13:18:22

试着这样做:

代码语言:javascript
复制
body = body.split(/.*<xxxxx@xxxxx.com> wrote:.*/).first

第一个.*之后的空格是无用的,并且(正如@aef指出的)第二个.*之前的空格是错误的(可能在你的橡胶测试中有一个空格)。

请注意,我还删除了m修饰符。如果我没有这样做,正则表达式将匹配整个字符串,从而导致一个空数组。这就是Ruby所说的多行模式(其他所有人都称之为单行或全点模式):.可以匹配任何内容,包括换行符。

编辑:

票数 1
EN

Stack Overflow用户

发布于 2011-03-05 13:05:06

这条线

代码语言:javascript
复制
Yada Yada <xxxxx@xxxxx.com> wrote:

以换行符结束,而不是空格。所以你的正则表达式应该是:

代码语言:javascript
复制
/.* <xxxxx@xxxxx.com> wrote:\n.*/m

注意: Windows系统和一些协议,如HTML,可以使用不同的换行编码。如果您希望确保兼容,请先将您的输入转换为unix换行编码,然后执行数据提取。你可以用我的linebreak gem来解决这个问题。

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

https://stackoverflow.com/questions/5201684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档