给定如下文本:
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 我想匹配第二段,所以我这样做:
body = body.split(/.* <xxxxx@xxxxx.com> wrote: .*/m).first但这在ruby中是不匹配的,即使它在Rubular中也是如此。你知道为什么吗?谢谢
发布于 2011-03-05 13:18:22
试着这样做:
body = body.split(/.*<xxxxx@xxxxx.com> wrote:.*/).first第一个.*之后的空格是无用的,并且(正如@aef指出的)第二个.*之前的空格是错误的(可能在你的橡胶测试中有一个空格)。
请注意,我还删除了m修饰符。如果我没有这样做,正则表达式将匹配整个字符串,从而导致一个空数组。这就是Ruby所说的多行模式(其他所有人都称之为单行或全点模式):.可以匹配任何内容,包括换行符。
编辑:
发布于 2011-03-05 13:05:06
这条线
Yada Yada <xxxxx@xxxxx.com> wrote:以换行符结束,而不是空格。所以你的正则表达式应该是:
/.* <xxxxx@xxxxx.com> wrote:\n.*/m注意: Windows系统和一些协议,如HTML,可以使用不同的换行编码。如果您希望确保兼容,请先将您的输入转换为unix换行编码,然后执行数据提取。你可以用我的linebreak gem来解决这个问题。
https://stackoverflow.com/questions/5201684
复制相似问题