@ _blackjack_ :
vielleicht ist es bereits zu spät, vielleicht bin ich einfach auch nur zu dumm. Momentan will's einfach nicht in meine Birne.
Wenn ich einen Teststring "67\78" habe und somit nach *einem* \ suche, dann gebe ich als regex (input) "\\" ein und es gibt einen Treffer (siehe unser Script) ...
wenn ich nach einer windows-spezifischen Pfadangabe suche "c:\blablub", dann muß ich *vier* \ nehmen, da der Pfad in Python "c:\\blablub" heißt, weil der *eine* \ durch einen *zweiten*\ maskiert werden muß ... komm, laß gut sein ...
Vielen Dank für deine kostbare Zeit, die du für mich geopfert hast. Vielleicht wird's mit Beispielen einfacher ...
Benutzereingabe und das Modul re
- __blackjack__
- User
- Beiträge: 13110
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Ich habe doch jedes mal Beispiele geliefert. Und Du schreibst jetzt doch selbst das Du wenn Du nach *einem* \ suchst, im regulären Ausdruck *zwei* \ benötigst.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
@ _blackjack_ :
ich kenne leider nicht alle Methoden/Funktionen, die du in deinen Beispielen aufgeführt hast, muß ich erst mal nachlesen ...
ja, wenn ich *einen* \ suche, dann *zwei*\ in regex, das ist klar, aber eben nicht *vier* \ !
*vier* \ in regex, wenn ich *zwei* suche ...
diese Aussage von dir (auf's Wesentliche gekürzt) verwirrt mich eben:
ich kenne leider nicht alle Methoden/Funktionen, die du in deinen Beispielen aufgeführt hast, muß ich erst mal nachlesen ...
ja, wenn ich *einen* \ suche, dann *zwei*\ in regex, das ist klar, aber eben nicht *vier* \ !
*vier* \ in regex, wenn ich *zwei* suche ...
diese Aussage von dir (auf's Wesentliche gekürzt) verwirrt mich eben:
Um *einen* \ zu matchen [...] so: '\\\\' [...]
wer lesen kann ist klar im Vorteil
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !
- __blackjack__
- User
- Beiträge: 13110
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Perlchamp: Um einen \ zu matchen braucht der reguläre Ausdruck zwei \ und um zwei \ in einem normalen Zeichenkettenliteral in Python zu schreiben braucht man vier \. Man muss den einen \ einmal für den regulären Ausdruck escapen, und dann die beiden noch mal für den Python-Compiler, macht insgesamt vier. Weil, und hier wiederhole ich mich jetzt nochmal: '\\\\' ist ein Zeichenkettenliteral das eine Zeichenkette mit *zwei* \ beschreibt:
Und jetzt sag bitte nicht das Du `len()` und `print()` nicht kennst.
Code: Alles auswählen
In [83]: len('\\\\')
Out[83]: 2
In [84]: print('\\\\')
\\
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
@ _blackjack_ :
ja, nee, len() und print() kenne ich bereits
das Prinzip ist generell klar :
die doppelte Anzahl des zu matchenden Strings in der regex, kein Thema, war mir immer klar.
Der Hase liegt woanders begraben (das war auch die ganze Zeit das Mistverständnis; dass ich nie den Compiler in Betracht gezogen habe, was jedoch für dich selbstverständlich war.) :
warum muß ich das nochmals für den Compiler doppeln (also dann insgesamt zweimal doppeln) ?
ich habe doch den Teststring (mit *einem* \) und meine regex (mit *zwei* \). Findet doch das Match durch 're.search()' und gut ist. Warum muß ich also nochmals für den Compiler die regex maskieren (=> *vier* \) ?
Wo liegt mein Denkfehler ?
Unser Script liefert doch ab !
ja, nee, len() und print() kenne ich bereits
das Prinzip ist generell klar :
die doppelte Anzahl des zu matchenden Strings in der regex, kein Thema, war mir immer klar.
Der Hase liegt woanders begraben (das war auch die ganze Zeit das Mistverständnis; dass ich nie den Compiler in Betracht gezogen habe, was jedoch für dich selbstverständlich war.) :
warum muß ich das nochmals für den Compiler doppeln (also dann insgesamt zweimal doppeln) ?
ich habe doch den Teststring (mit *einem* \) und meine regex (mit *zwei* \). Findet doch das Match durch 're.search()' und gut ist. Warum muß ich also nochmals für den Compiler die regex maskieren (=> *vier* \) ?
Wo liegt mein Denkfehler ?
Unser Script liefert doch ab !
wer lesen kann ist klar im Vorteil
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !
- __blackjack__
- User
- Beiträge: 13110
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Perlchamp: In dem Skript wird der reguläre Ausdruck ja auch vom Benutzer eingegeben und steht nicht im Quelltext. Also muss er auch nicht am Python-Compiler vorbei.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
@ _blackjack_
jetzt wird ein Schuh draus, verstehe ... ok damit ist der Groschen endgültig gefallen
ich danke dir nochmals für deine Geduld und deine Zeit.
jetzt wird ein Schuh draus, verstehe ... ok damit ist der Groschen endgültig gefallen
ich danke dir nochmals für deine Geduld und deine Zeit.
wer lesen kann ist klar im Vorteil
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !