2010-11-19 9 views
0

Ich hatte versucht, die erste der folgenden Arten von Zeichenketten in einer E-Mail zum Spiel:Regex - Eine Zeile passt, aber etwas mit/m falsch?

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

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

Die erste Zeile korrekt übereinstimmt, aber die zweite nicht. hier ist das, was ich bisher:

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

ich kann nicht herausfinden, warum die zweite Zeile erroring. Ideen?

Antwort

2

Für die zweite Zeile, die Sie brauchen:

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

kombiniert So könnten Sie verwenden:

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

So versuchen, dieses Skript I:

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 

die

"Holla" 
ergibt

Ist das nicht das, was Sie wollen?

+0

Danke, aber das scheint Gett sein er ist gestolpert ... – AnApprentice

+0

Hier ist die Zeile, die gerade fehlgeschlagen ist: "Am Donnerstag, 18. November 2010 um 20:41 Uhr, SiteNameHere <[email protected]> schrieb:" Was macht das/m? Ich kann das nicht in der Dokumentation finden – AnApprentice

+1

Das 'm' steht für multiline - wenn Sie es nicht zur Verfügung stellen, wird' .' nicht mit Newline-Zeichen ('\ n') übereinstimmen. –

1

Es gibt ein Komma nach "Do" und Sie sind nicht verantwortlich dafür.

edit:

Gibt es einen Grund dafür, so genau zu sein? Warum nicht einfach passen und ersetzen: /^On.*at.*wrote:/

bearbeiten wieder:

so nach hier bei Ihrem Pastebin suchen ist, was ich glaube, Sie wollen:

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

, die die Pfeile auf der ausräumen wird Anfang der Zeile, die Zeile selbst und das Ende der Zeile, so sollte es so aussehen:

> 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, scheint es mehr zu geben, siehe unten. Irgendwelche Ideen? Vielen Dank! – AnApprentice