Seite 1 von 1

String zwischen 2 Strings per Regular Expressions rausfinden

Verfasst: Mittwoch 11. Mai 2005, 21:06
von Transmitter
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

Verfasst: Mittwoch 11. Mai 2005, 21:14
von 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.

Verfasst: Mittwoch 11. Mai 2005, 22:03
von Transmitter
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?

Verfasst: Mittwoch 11. Mai 2005, 22:22
von CM
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

Verfasst: Mittwoch 11. Mai 2005, 23:26
von Transmitter
Damit wäre es super :)

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