Jan K.: Regulärer Ausdruck Funktion unklar

Beitrag lesen

Hallo liebes Forum,

folgender Regulärer Ausdruck entfernt XML Kommentare:
(?s)<!--.*?-->

(Quelle: http://stackoverflow.com/questions/6804951/regex-to-remove-comments-in-xml-file-in-eclipse-java)

Der hintere Teil trifft meiner Meinung nach non-greedy einzeilige Kommentare.
Der vordere Teil ist mir ein Rätsel.

Kann mir jemand auf die Sprünge helfen wie dieser Ausruck arbeitet?

Unten hänge ich noch eine Beispiel XML-Code an.

Ich benutze ein regex-replace plugin für gedit das mit python-regex arbeitet.

Grüße aus Berlin,
Jan

  
<?xml version="1.0" encoding="UTF-8" ?>  
<wwrite Zeitnahme="n">  
	<MessageConf>  
		<sql id="veranstaltungsname" db="lsf" sql="select dtxt from veranstaltung where veranstid=[veranstId]" />  
	</MessageConf>  
	<module>  
		<fsemmod verwendeteDB="sospos">  
			<matches>  
				<!-- Neue Konfigurationsmoeglichkeit:-->  
				<match continue="y">1|1|1|1|1|1</match>  
				<xmatch>1|1|1|1|1|1</xmatch>  
				<match>1|1|1|0|1|1</match>  
				<match>1|1|0|0|1|1</match>  
				<match>1|1|1|0|0|1</match>  
				<match>1|1|0|0|0|1</match>  
				<match>1|1|1|0|0|0</match>  
				<match>1|1|0|1|0|0</match>  
				<match>1|1|0|0|1|0</match>  
				<match>1|1|0|0|0|0</match>  
				<match>1|0|0|0|1|1</match>  
				<match>0|1|0|0|1|1</match>  
				<match>1|0|0|0|1|0</match>  
				<match>1|0|0|0|0|1</match>  
			</matches>  
			<!-- laenge: Zusammensetzung des Internen Schluessels der Studiengaenge. Der letzte darf 'x'= beliebig lang sein -->  
			<alleStg laenge="10|2|10">  
				<SQL ODBC="lsf">  
					<Select>  
						<default>SELECT DISTINCT k_abstgv.abstgv, k_abstgv.kzfa, k_abstgv.pversion, k_abstgv.abstgvnr FROM k_abstgv</default>  
					</Select>  
				</SQL>  
			</alleStg>  
			<studentStg laenge="2|3|3|2|2|10">  
				<Parameter Name="stgNrs" ODBC="lsf" dbSpalte="k_abstgv.abstgvnr" />  
				<SQL ODBC="sospos" VeloName="sosposStgDaten">  
					<Select>  
						<default>  
							SELECT DISTINCT stg.abschl AS StgAbs, stg.stg AS StgStg, stg.vert AS StgVer, stg.schwp AS StgSch, stg.kzfa AS StgKzf,  
									stg.pversion AS StgPve, stg.semester AS StgSem, stg.stgsem AS StgSSe, stg.klinsem AS SosFsemmod,  
									k_abint.ktxt AS AbiKtx  
							FROM (stg INNER JOIN sos ON (sos.semester=stg.semester AND stg.mtknr=sos.mtknr))  
							     LEFT JOIN k_abint ON (stg.abschl=k_abint.abint)  
							WHERE stg.mtknr=$session_ident_S  
						</default>  
						<!-- Hat sich ein Student zurückgemeldet so wird in der stg-Tabell ein neuer Satz erzeugt  
						für das neue Semester und auch in der Tabelle sos wird semester hochgesetzt.  
						Um falsche Ausgabe der Studiengangspläne zu vermeiden, muss es o.g. SQL angepasst werden.  
						($Bezugssemester=stg.semester anstatt sos.semester=stg.semester)  
						 -->  
						<!--  
						<default>  
							SELECT DISTINCT stg.abschl AS StgAbs, stg.stg AS StgStg, stg.vert AS StgVer, stg.schwp AS StgSch, stg.kzfa AS StgKzf,  
									stg.pversion AS StgPve, stg.semester AS StgSem, stg.stgsem AS StgSSe, stg.klinsem AS SosFsemmod,  
									k_abint.ktxt AS AbiKtx  
							FROM (stg INNER JOIN sos ON ($Bezugssemester=stg.semester AND stg.mtknr=sos.mtknr))  
							     LEFT JOIN k_abint ON (stg.abschl=k_abint.abint)  
							WHERE stg.mtknr=$session_userID  
						</default>  
						-->  
					</Select>  
				</SQL>  
			</studentStg>  
			<SQL ODBC="lsf" VeloName="lsfStgDaten" addStudentValues="y">  
				<Select>  
					<default>  
						SELECT DISTINCT k_abstgv.abstgvnr AS AbsNr, k_abstgv.abstgv AS AbsID, k_abstgv.ktxt AS AbsKtx, k_abstgv.dtxt AS AbsDtx,  
						                k_abstgv.abschl AS AbsAbs, k_abstgv.pversion AS AbsPve, k_abstgv.schwp AS AbsSch, k_abstgv.vert AS AbsVer  
						FROM k_abstgv  
						WHERE #if($stgNrs) $stgNrs #else 0=1 #end  
					</default>  
				</Select>  
			</SQL>  
			<SQL ODBC="sospos" VeloName="semester_fsem" addStudentValues="n">  
				<Select>  
					<default>  
							SELECT DISTINCT stg.semester AS StgSem, stg.stgsem AS StgSSe FROM stg WHERE stg.mtknr=$session_userID  
					</default>  
				</Select>  
			</SQL>  
			<Session Name="session_stg_lsfStgNr" Quelle="session_stg_lsfStgDaten" Feld="AbsNr" AbhIDFeld="AbsNr" Methode="copy"/>  
			<Session Name="session_stg_fsemmod" Quelle="session_stg_lsfStgDaten" Feld="StgSSe" AbhIDFeld="AbsNr" Methode="copy"/>  
			<Session Name="session_stg_fsemmodMap" Quelle="session_stg_semester_fsem" Feld="StgSSe" AbhIDFeld="StgSem" Methode="map"/>  
			<!--<Session Name="session_stg_abschnitt" Quelle="session_stg_lsfStgDaten" Feld="SosFsemmod" AbhIDFeld="AbsNr" Methode="makeAbschnitt"/>-->  
			<!--  
			Parameter der Session sind:  
			session_stg_stgNrs:      Alle moeglichen abstgvnr aus dem Match als Array  
			session_stgarray_stgNrs: Alle moeglichen abstgvnr aus dem Match als komma-separierte Liste  
			session_stg_lsfStgNr:    Die 'aktive' abstgvnr  
			session_sql_stgNrs:      der Schuessel 'stgNrs'  
			session_stg_lsfStgDaten: Element, Ergebnis des SQL um sospos-Informationen ergaenzt  
			session_stg_fsemmod:     Modifiziertes Fachsemester, im einfachen Fall das Feld stg.stgsem.  
			session_stg_fsemmod_prop: key=lsf.k_abstgv.abstgvnr, value=fsemmod. Alle Werte, die mit Methode=copy erzeugt wurden, werden in eine Property mit Namen [Name]_prop geschrieben.  
									 Zusätzlich sind die Properties key und value enthalten, damit man weiß, was es bedeutet.  
			-->  
		</fsemmod>		  
	  </module>  
</wwrite>