Ruby 正则表达式-匹配一行,但/m有问题吗?

Ruby 正则表达式-匹配一行,但/m有问题吗?,ruby,regex,pattern-matching,Ruby,Regex,Pattern Matching,我试图在电子邮件中匹配以下字符串类型中的第一种: On Nov 18, 2010, at 8:21 PM, SiteName wrote: On Thu, Nov 18, 2010 at 8:21 PM, SiteName <notification@SiteName.com> wrote: 我不明白为什么第二行出错。想法?对于您需要的第二行: mystring.sub(/^On \w+, \w+ \d+, \d+ at.* wrote:.*/m, '').strip 因此,您

我试图在电子邮件中匹配以下字符串类型中的第一种:

On Nov 18, 2010, at 8:21 PM, SiteName wrote:

On Thu, Nov 18, 2010 at 8:21 PM, SiteName <notification@SiteName.com> wrote:

我不明白为什么第二行出错。想法?

对于您需要的第二行:

mystring.sub(/^On \w+, \w+ \d+, \d+ at.* wrote:.*/m, '').strip
因此,您可以使用:

mystring.sub(/^On \w+(, \w+)? \d+, \d+,? at.* wrote:.*/m, '').strip
因此,我尝试以下脚本:

puts "Holla

On Thu, Nov 18, 2010 at 8:41 PM, SiteNameHere <notification@mylongsitename.com>wrote:
> testttttttt
>
> On Thu, Nov 18, 2010 at 8:47 PM, Brett Hellman <bhellman1@gmail.com> wrote:
>>
>> Thanks for setting this up
>>
>> On Thu, Nov 18, 2010 at 8:46 PM, CompanyLine <notification@companyline.com> wrote:
>>>
>>> Steve Apple has created a new conversation on CompanyLine: Test 3 Regex issues
>>>
>>> The following people have been added as participants:
>>>
>>> - Steve Apple
>>> - Brett Hellman
>>
>".sub(/^On \w+(, \w+)? \d+, \d+,? at.* wrote:.*/m, '').strip

这不是您想要的吗?

对于您需要的第二行:

mystring.sub(/^On \w+, \w+ \d+, \d+ at.* wrote:.*/m, '').strip
因此,您可以使用:

mystring.sub(/^On \w+(, \w+)? \d+, \d+,? at.* wrote:.*/m, '').strip
因此,我尝试以下脚本:

puts "Holla

On Thu, Nov 18, 2010 at 8:41 PM, SiteNameHere <notification@mylongsitename.com>wrote:
> testttttttt
>
> On Thu, Nov 18, 2010 at 8:47 PM, Brett Hellman <bhellman1@gmail.com> wrote:
>>
>> Thanks for setting this up
>>
>> On Thu, Nov 18, 2010 at 8:46 PM, CompanyLine <notification@companyline.com> wrote:
>>>
>>> Steve Apple has created a new conversation on CompanyLine: Test 3 Regex issues
>>>
>>> The following people have been added as participants:
>>>
>>> - Steve Apple
>>> - Brett Hellman
>>
>".sub(/^On \w+(, \w+)? \d+, \d+,? at.* wrote:.*/m, '').strip

这不是你想要的吗?

在“Thu”后面有一个逗号,你没有考虑到这一点

编辑:

有什么理由这么具体吗?为什么不匹配并替换:
/^On.*at.*编写:/

再次编辑:

因此,在看了你的粘贴盒后,我认为你想要的是:

string.gsub(/\>+\sOn.*at.*写入:\s/,“”)

这将清除线开始处的箭头、线本身和线结束处的箭头,因此它应该如下所示:

> testttttttt
>
>>
>> Thanks for setting this up
>>
>>>
>>> Steve Apple has created a new conversation on CompanyLine: Test 3 Regex issues
>>>
>>> The following people have been added as participants:
>>>
>>> - Steve Apple
>>> - Brett Hellman
>>
>

“Thu”后面有一个逗号,你没有考虑到这一点

编辑:

有什么理由这么具体吗?为什么不匹配并替换:
/^On.*at.*编写:/

再次编辑:

因此,在看了你的粘贴盒后,我认为你想要的是:

string.gsub(/\>+\sOn.*at.*写入:\s/,“”)

这将清除线开始处的箭头、线本身和线结束处的箭头,因此它应该如下所示:

> testttttttt
>
>>
>> Thanks for setting this up
>>
>>>
>>> Steve Apple has created a new conversation on CompanyLine: Test 3 Regex issues
>>>
>>> The following people have been added as participants:
>>>
>>> - Steve Apple
>>> - Brett Hellman
>>
>

以下是刚刚失败的一句话:“2010年11月18日星期四晚上8:41,SiteNameHere写道:“/m做什么?我在文档中找不到
m
代表多行-如果您不提供它,
将不匹配换行符(
\n
)。此外,如果您一直面临问题,您可能需要发布更多信息/代码,以便我们可以看到问题出在哪里,您想做什么。@Jakub,它在发送HTML电子邮件时与GMAIL分道扬镳,而在发送纯文本电子邮件时,GMAIL的工作方式很好。也许需要断线才是问题所在/^那么,您是否也需要
gsub
而不是
sub
?还有,
字符不是引起了一些问题吗?下面是刚刚失败的一句话:“2010年11月18日星期四晚上8:41,SiteNameHere写道:/m做什么?我在文档中找不到
m
代表多行-如果您不提供它,
将不匹配换行符(
\n
)。此外,如果您一直面临问题,您可能需要发布更多信息/代码,以便我们可以看到问题出在哪里,您想做什么。@Jakub,它在发送HTML电子邮件时与GMAIL分道扬镳,而在发送纯文本电子邮件时,GMAIL的工作方式很好。也许需要断线才是问题所在/^那么,您是否也需要
gsub
而不是
sub
字符不是也会引起一些问题吗?re5et,似乎还有更多问题,请参见下文。有什么想法吗?谢谢re5et,似乎还有更多的事情发生,见下文。有什么想法吗?谢谢