VB.NET REGEX in Python - unexpected end of pattern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
streetfox
User
Beiträge: 18
Registriert: Dienstag 27. Januar 2009, 12:23

Dienstag 27. Januar 2009, 19:07

ich find die kommentare vom admin zum 2ten und letzten mal hier auch sinnlos, doch das interessiert auch niemanden.

danke audax für die hilfe. Ich versuch halt die RE irgendwie selber umzuschreiben. Ich denk ich belass das mal hier, da vergeht einem ja die lust am sich beteiligen.

Gruss
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Dienstag 27. Januar 2009, 19:48

Warum soll der csv-Reader sich da verschlucken? Hast du das denn getestet? Die Dokumentation sagt ja nur, dass ``lineterminator`` gerade ignoriert wird, nicht aber, dass newlines nicht gehen.

Code: Alles auswählen

DATA = '''"Value1;";"Value2";"""Value3""";"of ""very"" ""difficult""";"";"expressions" 
"and";"";"we should not ;""then""; forget";"that it 
works ;" 
as ""ss"" 
expected"" 
"And";"this ""is""";" a";"new start" 
"And2";"this is a";"new start as well" 
"only "this" line";" is malformat;ted "with" quotes"'''

rows = list(csv.reader(DATA.splitlines(True), delimiter=';'))
print rows
scheint jedenfalls zu funktionieren.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Dienstag 27. Januar 2009, 19:52

Du hast doch einen an der Waffel, zumindest bist du etwas arg empfindlich. Leonidas Worte über RegExp sind absolut wahr, da kocht einfach jeder sein eigenes Süppchen. Einzig die POSIX-kompatiblen funktionieren eigentlich überall (jedenfalls gibts eigentlich immer ne Bibliothek die das kann).

@Leonidas:
Das Problem an dem in der StdLib ist, dass er mit Multiline Feldern nicht klarkommt, ich habs auch grad probiert.
streetfox
User
Beiträge: 18
Registriert: Dienstag 27. Januar 2009, 12:23

Dienstag 27. Januar 2009, 20:05

Jungs, bitte.

Ob wahr oder nicht, steht doch nicht zur debatte. Die Frage geht um die REGEXP. Dass Leonidas recht hat mit der eigenen Suppe is ja ok. Aber die Meinung hilft dem Problem nun mal nicht weiter.

Ich mag nun mal nicht wenn irgendwelche gescheiten leute die ganze zeit was zu motzen haben. In foren solls schliesslich sachlich zu und her gehen.

Ich ess jetzt meine Waffel ist zeit dazu ... das einzige Problem an der Sache ist, das ich halt weniger über Python lern und wieder VB mach. Meinetwegen.

Dann seid ihr glücklich und ich auch.

@Trundle:

leider ned:
[['Value1;', 'Value2', '"Value3"', 'of "very" "difficult"', '', 'expressions'], ['and', '', 'we should not ;"then"; forget', 'that it \nworks ;'], ['as ""ss""'], ['expected""'], ['And', 'this "is"', ' a', 'new start'], ['And2', 'this is a', 'new start as well'], ['only this" line"', ' is malformat;ted with" quotes"']]
[/code]
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Dienstag 27. Januar 2009, 20:10

Deine Frage war: "Warum geht der Ausdruck nicht"

Leonidas (und auch andere) sagen "Geht nicht, weil jeder sein eigenes Süppchen kocht. Entweder du benutzt das CSV Modul und guckst, was noch kann (gibt verschiedene Quoting Optionen und so... vllt klappt was. Wenn nicht, musst du selber was implementieren (sind auch komische CSV-Daten)"

...so? Das Problem seh ich dabei nicht oO'' Aber wenn du so unglücklich über die Antworten bist...
streetfox
User
Beiträge: 18
Registriert: Dienstag 27. Januar 2009, 12:23

Dienstag 27. Januar 2009, 20:23

geht nicht gibts nicht
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Dienstag 27. Januar 2009, 20:39

streetfox hat geschrieben:geht nicht gibts nicht
Scheinbar schon oO' Implementier die .net Bibliothek für RegEx nach, benutz IronPython oder schmeiß den Ausdruck weg und benutz was anderes (anderer ausdruck, obwohl sowas für einen RegEx schwer wird, CSV-Bibliothek angepasst)..

Eben all das, was dir die anderen hier auch geraten haben oO''

Übrigens war deine letzte Antwort auch nicht von Höflichkeit gefüllt. Eher von Spott und vor allem von unverständlichkeit von dem, was ich gesagt habe.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dienstag 27. Januar 2009, 20:39

streetfox hat geschrieben: In foren solls schliesslich sachlich zu und her gehen.
Also das kann man doch nicht verallgemeinern - im Gegenteil gibts sicherlich auch solche, wo das gerade nicht erwünscht ist ;-) Davon abgesehen ging es hier doch sachlich zu!
streetfox hat geschrieben: Ich ess jetzt meine Waffel ist zeit dazu ... das einzige Problem an der Sache ist, das ich halt weniger über Python lern und wieder VB mach. Meinetwegen.
Ja und? Wen stört das? Und auch hier liegst Du falsch: Man lernt ja nicht weniger über Python, nur weil man den dafür vorgesehenen Weg geht, und man lernt anders herum nicht mehr, nur weil man einen "tollen" RegExp bastelt!
Dann seid ihr glücklich und ich auch.
Also ich denke der Glückszustand jedes einzelnen hier ist nicht von Dir abhängig :-D
streetfox
User
Beiträge: 18
Registriert: Dienstag 27. Januar 2009, 12:23

Dienstag 27. Januar 2009, 20:44

geht nicht, gibts nicht ist eine Lebenseinstellung und nicht eine Höflichkeitsform.

Schade nimmt man sich selbst so wichtig. Also ich gebe auf, es gibt keine REGEXP in Python die genauso mächtig ist wie diese nach der ich gefragt habe.

dankeschön einstweilen
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dienstag 27. Januar 2009, 21:01

streetfox hat geschrieben:geht nicht, gibts nicht ist eine Lebenseinstellung und nicht eine Höflichkeitsform.
Sehr sachlich ... :shock: SCNR
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Dienstag 27. Januar 2009, 23:09

streetfox hat geschrieben:@Trundle:

leider ned:

Code: Alles auswählen

[
['Value1;', 'Value2', '"Value3"', 'of "very" "difficult"', '', 'expressions'], 
['and', '', 'we should not ;"then"; forget', 'that it \nworks ;'], 
['as ""ss""'], 
['expected""'], 
['And', 'this "is"', ' a', 'new start'], 
['And2', 'this is a', 'new start as well'], 
['only this" line"', ' is malformat;ted with" quotes"']]
Was stimmt den nicht?
Wenn ichs von Hand durchgehe, komm ich aufs selbe Resultat (bis auf die letzte Zeile, die ist aber extra Falsch)

Gruss
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Mittwoch 28. Januar 2009, 00:12

Jetzt wo du es sagst... :D
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 28. Januar 2009, 01:56

streetfox hat geschrieben:Ob wahr oder nicht, steht doch nicht zur debatte. Die Frage geht um die REGEXP. Dass Leonidas recht hat mit der eigenen Suppe is ja ok. Aber die Meinung hilft dem Problem nun mal nicht weiter.

Ich mag nun mal nicht wenn irgendwelche gescheiten leute die ganze zeit was zu motzen haben. In foren solls schliesslich sachlich zu und her gehen.
Also, ich erkläre dir warum die Regex nicht tut (was audax auch schon meinte, ich habe es eben etwas ausformuliert) und dass man meist am besten auf den CSV-Parser der in der Stdlib zugreift. Und dann erklärst du mir das das erstens niemanden interessiert (Hyperion klang recht interressiert.. tut mir Leid, dass ich ihm etwas über .NET erklärt habe) und zweitens dass es unsachlich ist.

Die Logik muss ich nicht verstehen, oder? Mir wird ja öfters etwas vorgeworfen (meist Unfreundlichkeit und manchmal auch zurecht) aber in diesem Fall muss ich zugeben, dass ich mir durchaus Mühe gegeben habe Dinge zu erklären und Möglichkeiten aufzuzeigen. Warum das "keinen interessiert" und "unsachlich" ist geht über mein Verständnis :K
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Mittwoch 28. Januar 2009, 02:05

Übrigens würde ich gerne den VB.net Code dazu sehen oO Ich versuchs grade in IronPython umzusetzen, aber da funktionierts auch nicht... auch nicht, wenn ich die .net Systembibliothek verwende.

Code: Alles auswählen

from System.Text.RegularExpressions import Regex

re = Regex('(?>([^,"]*("[^"]*")*[^,"]*)*)("[^"]*)?')

text = '''"Value1;";"Value2";"""Value3""";"of ""very"" ""difficult""";"";"expressions" 
"and";"";"we should not ;""then""; forget";"that it 
works ;" 
as ""ss"" 
expected"" 
"And";"this ""is""";" a";"new start" 
"And2";"this is a";"new start as well" 
"only "this" line";" is malformat;ted "with" quotes"'''

for i in re.Matches(text):
    print i
Wirft nur Hühnerkacke heraus.
streetfox
User
Beiträge: 18
Registriert: Dienstag 27. Januar 2009, 12:23

Mittwoch 28. Januar 2009, 08:04

@rayo

Code: Alles auswählen

"that it
works ;"
as ""ss""
expected"" 
"And"
.... nö, das oben ist 1 Record und nicht 3, auch von hand

@trundle, ja klar

Code: Alles auswählen

Dim list As StringCollection = New StringCollection()
	Dim ptest As New Regex("(?>([^,""]*(""[^""]*"")*[^,""]*)*)(""[^""]*)?")
	Dim MatchResult As Match = ptest.Match(DATA)
	While MatchResult.Success
		list.Add(MatchResult.Value)
		MatchResult = MatchResult.NextMatch()
	End While
Antworten