2010-11-19 6 views
0

J'avais essayer de faire correspondre le premier des types de chaînes suivantes dans un courriel:Regex - Faire correspondre une ligne mais quelque chose ne va pas avec/m?

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

On Thu, Nov 18, 2010 at 8:21 PM, SiteName <[email protected]> wrote: 

La première ligne correspond correctement, mais le 2ème ne fonctionne pas. voici ce que j'ai jusqu'à présent:

mystring.sub(/^On \w+ \d+, \d+, at.* wrote:.*/m, '').strip 

Je n'arrive pas à comprendre pourquoi la 2ème ligne est en erreur. Des idées?

Répondre

2

Pour la deuxième ligne dont vous avez besoin:

mystring.sub(/^On \w+, \w+ \d+, \d+ at.* wrote:.*/m, '').strip 

vous combinés de peut-être utiliser:

mystring.sub(/^On \w+(, \w+)? \d+, \d+,? at.* wrote:.*/m, '').strip 

J'essayer ce script:

puts "Holla 

On Thu, Nov 18, 2010 at 8:41 PM, SiteNameHere <[email protected]>wrote: 
> testttttttt 
> 
> On Thu, Nov 18, 2010 at 8:47 PM, Brett Hellman <[email protected]> wrote: 
>> 
>> Thanks for setting this up 
>> 
>> On Thu, Nov 18, 2010 at 8:46 PM, CompanyLine <[email protected]> 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 

qui donne

"Holla" 

N'est-ce pas ce que vous voulez?

+0

Merci, mais cela semble être gett ing a trébuché ... – AnApprentice

+0

Voici la ligne qui vient d'échouer: "Le jeu, 18 novembre 2010 à 20h41, SiteNameHere <[email protected]> a écrit:" Que fait le/m? Je ne peux pas trouver cela dans les docs – AnApprentice

+1

Le 'm' signifie multiline - si vous ne le fournissez pas,' .' ne correspondra pas aux caractères de nouvelle ligne ('\ n'). –

1

Il y a une virgule après 'Thu' et vous n'en tenez pas compte.

modifier:

est-il une raison pour qu'il soit si spécifique? Pourquoi ne pas simplement et à remplacer: /^On.*at.*wrote:/

modifier à nouveau:

donc après avoir regardé votre pastebin voici ce que je pense que vous voulez:

string.gsub(/\>+\sOn.*at.*wrote:\s/, '')

qui va nettoyer les flèches au début de la ligne, la ligne elle-même, et la fin de la ligne, donc il devrait ressembler à ceci:

> 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 
>> 
> 
+0

re5et, il semble y avoir plus de choses en cours, voir ci-dessous. Des idées? Merci! – AnApprentice