String zwischen 2 Strings per Regular Expressions rausfinden

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.
Antworten
Transmitter
User
Beiträge: 24
Registriert: Mittwoch 24. November 2004, 02:23

Hi

Ich habe einen String:


asdfZUDFyxcv

asdf und yxcv sind immer gleich, ZUDF kann sich immer ändern in Zeichen (ohne Sonderzeichen und Ziffern)
Wie kann ich denn rausfinden, was dazwischen steht bzw. wo sich der String befindet?
Also .. asdf kann auch länger oder kürzer sein, aber da steht immer asdf und dahinter steht immer yxcv.

Ich finde nur search und match .. und ein MatchObject, aber irgendwie passt das nicht richtig auf meine Problemstellung :-/

Danke schon mal :)
Bye, Transmitter
BlackJack

Wenn 'asdf' und 'yxcf' vorher bekannt sind, dann brauchst Du gar keinen regulären Ausdruck:

Code: Alles auswählen

In [157]: pre = 'asdf'

In [158]: post = 'yxcv'

In [159]: data = 'asdfZUDFyxcv'

In [160]: data[len(pre):-len(post)]
Out[160]: 'ZUDF'
Ansonsten beschreib das Problem mal etwas genauer.
Transmitter
User
Beiträge: 24
Registriert: Mittwoch 24. November 2004, 02:23

Also ich habe z.B.: 3 Dateien:

Code: Alles auswählen

vyseraweavsdasdfZUDFyxcvvyserav

Code: Alles auswählen

avrrtsdhi mzmasdfZUDFyxcvvvselrvvyiov

Code: Alles auswählen

vfbnfnrnasdfZUDFyxcvrnubhnt
und ZUDF kann sich ändern
asdf davor und yxcv dahinter aber nicht
davor und dahinter kann sich auch alles ändern.

Was ZUDF ist will ich wissen, bzw. will aus dem String einen Substring haben mit:
String = .. ganzer Dateiinhalt
SubString = ZUDF ..

Wie meinst du das mit deinem In und Out?
Würde das so funktionieren?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

wie wäre es mit

Code: Alles auswählen

import re

tests = ['vyseraweavsdasdfZUDFyxcvvyserav','avrrtsdhi mzmasdfZUDFyxcvvvselrvvyiov',\
'vfbnfnrnasdfZUDFyxcvrnubhnt']

m = re.compile("asdf[\w]*yxcv")

for test in tests:
	print test
	#finde alle (hier nicht notwendig)
	iterator = re.finditer(m,test)
	for match in iterator:
		t = match.span()
		print t
		print test[t[0]+4:t[1]-4]
Gruß,
Christian
Transmitter
User
Beiträge: 24
Registriert: Mittwoch 24. November 2004, 02:23

Damit wäre es super :)

Danke dir .. mit regular expressions habe ich meistens so ein paar Anlaufschwierigkeiten :-/ :cry:
Antworten