AMIGA-RESISTANCE

Die Projektseite für alles rund um den Amiga
Aktuelle Zeit: 28 Mär 2024, 19:40

Alle Zeiten sind UTC


 

 

 



Ein neues Thema erstellen  Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite « 1 2
Autor Nachricht
BeitragVerfasst: 11 Feb 2017, 20:27 
Offline
Alter Hase
Benutzeravatar

Registriert: 31 Mai 2016, 16:12
Beiträge: 63
Postleitzahl: 53489
Land: Deutschland
Wohnort: Sinzig / Rhein
Hi Tipsi,
im Prinzip, so wie ich es haben wollte. :D
s$ =[[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="content-type">
  <title></title>
</head>
<body>
HTML Beispiel<br>
<br>
<br>
Beispiel 1:<br>
<br>
Content: Meine Satzl&auml;nge ist immer unterschiedlich. Es
k&ouml;nnen alle m&ouml;glichen Zeichen vorhanden sein.<br>
<br>
Beispiel 2:<br>
<br>
Content: ab........................................<br>
<br>
</body>
</html>]]



s$   = PatternFindStrShort(s$,"[Beispiel 1:] .* [Beispiel 2:]")
s$,n = PatternReplaceStr(s$,"<br>","")
s$,n = PatternReplaceStr(s$,"Beispiel 2","")
DebugPrint(s$)
Glaub jetzt aber bloß nicht ich hätte die Strinpattern komplett verstanden.
Ist doch ein recht komplexes Thema und es gibt leider kaum Hollywood Beispiele.

Grüße


Nach oben
   
BeitragVerfasst: 12 Feb 2017, 15:31 
Offline
Alter Hase
Benutzeravatar

Registriert: 31 Mai 2016, 16:12
Beiträge: 63
Postleitzahl: 53489
Land: Deutschland
Wohnort: Sinzig / Rhein
Hallo Hollywood Gemeinde

Andreas hat mir auf meine Email Anfrage geantwortet.
Er rät generell ab RegEx zum parsen von Html zu benutzen, er empfiehlt das xmlparser Plugin.
Ein Link von Ihm: http://stackoverflow.com/questions/1732 ... 54#1732454

Er hat recht, vergesst meine vorangegangene Post, das Muster funktioniert nur in diesem Beispiel. :oops:

Ein Pattern von Andreas:
String$ = "<a>Hallo Welt</a>"
DebugPrint(PatternFindStrShort(String$, "<a>([%w%s]+)</a>"))

Normalerweise veröffentliche ich kein Email´s oder PN´s, aber ich denke ich hab´s ziemlich neutral/allgemein gehalten.

Grüße, Michael


Nach oben
   
BeitragVerfasst: 13 Feb 2017, 08:56 
Offline
Schreiberling
Benutzeravatar

Registriert: 17 Okt 2007, 21:48
Beiträge: 1392
Postleitzahl: 4132
Land: Schweiz
Wohnort: Muttenz
Salli msu

Und? Läuft es mit dem neuen Muster von Andreas?

Griessli
Tipsi


Nach oben
   
BeitragVerfasst: 13 Feb 2017, 20:23 
Offline
Alter Hase
Benutzeravatar

Registriert: 31 Mai 2016, 16:12
Beiträge: 63
Postleitzahl: 53489
Land: Deutschland
Wohnort: Sinzig / Rhein
Hi Tipsi,
ich hatte jetzt nur kurz Zeit zum testen.

Ein Beispiel mit wahrlos gewählten Zeichen:
String$ = [[FFFFFF%%%%6se6666/////575"""§33§§§Start%%%///////===\\\\\\\
gjghnjsdfg s...---,,,-,--,-,--,-,-#####++++++++-------
dgsdgsdgdEnde$$$&&&><>>>>>gfdghdfhdfhdf
dsgsgggsdfgsdf]]

DebugPrint(PatternFindStrShort(String$, "Start([%w%s%p]+)End"))
Ergibt exakt die Zeichen zwischen Start und Ende. :D


Dieses Beispiel parst einen Teil der Hollywood HTML Hilfe (Befehl Sin):
String$ = [[<dt class="autodoc"><b>Function</b></dt><dd>
Calculates the sine of the angle x.

<p>
</dd>
<dt class="autodoc"><b>Inputs</b></dt><dd>]]


DebugPrint(PatternFindStrShort(String$, "Function</b></dt><dd>([%w%s%p]+)<p>"))
Ergibt genau alle Zeichen zwischen Function....... und <p>. :D

Das Pattern habe ich wie Du siehst um %p (Represents all punctuation characters.) erweitert.

Du scheinst mir recht erfahren mit dem String-Handling von Hollywood zu sein.
Wie entferne ich Zeilenumbrüche aus einem String?

Grüße, Michael


Nach oben
   
BeitragVerfasst: 13 Feb 2017, 22:50 
Offline
Schreiberling
Benutzeravatar

Registriert: 17 Okt 2007, 21:48
Beiträge: 1392
Postleitzahl: 4132
Land: Schweiz
Wohnort: Muttenz
Salli msu

Toll, wenn das so mit dem von Dir erweiterten
Muster klappt.

Die Zeilenumbrüche kannst Du mit dem Befehl
ReplaceStr() entfernen oder ersetzen.

Mit dieser Zeile kannst Du die Umbrüche entfernen
und sie werden nicht ersetzt:
NeuHTML$ = ReplaceStr(AltHTML$, Chr(10), "")
Falls Du ein Leerzeichen anstelle der Zeilenumbrüche
einfügen möchtest, dann sieht das so aus:
NeuHTML$ = ReplaceStr(AltHTML$, Chr(10), " ")
Natürlich dürfen die Variablen NeuHTML$ und AltHTML$
den gleichen Namen tragen.

Chr(10) ist der ASCII-Wert für Zeilenumbrüche (line feed).
Eher selten, kann aber auch vorkommen, dass statt line feed
Return benutzt wurde. Der ASCII-Wert in diesem Fall wäre Chr(13).

Die Schablone für diesen Befehl ist:
var$ = ReplaceStr(s$, search$, replace$[, casesensitive, startpos])

var$            - die neue Zeichenkette
s$              - in dieser Zeichenkette wird gesucht
search$         - nach dieser Teilkette wird gesucht
replace$        - durch diese Teilkette wird ersetzt
casesensitive   - optional: TRUE berücksichtigt Gross-/Kleinschreibung (voreingestellt), FALSE nicht
startpos        - optional: Startposition von Suchen & Ersetzen (voreingestellt ist 0)
Falls Du diesen Befehl mal für Wörter benutzen möchtest, beachte, dass
die Unterscheidung zwischen Gross- und Kleinschreibung eingeschaltet ist.
Somit ist z.B. <BR> nicht gleich <br>. Wenn Du casesensitive=False setzt,
dann beachtet dieser Befehl auch <Br>,<bR>, <BR> und <br>.

Griessli
Tipsi


Nach oben
   
BeitragVerfasst: 14 Feb 2017, 17:44 
Offline
Alter Hase
Benutzeravatar

Registriert: 31 Mai 2016, 16:12
Beiträge: 63
Postleitzahl: 53489
Land: Deutschland
Wohnort: Sinzig / Rhein
Hallo Tipsi,
sehr ausführlich Deine Erklärung, solltet Ihr echt in´s deutsche Hollywood Handbuch übernehmen. Danke. :daumen:

Eventuell erwähnenswert , das unter Windows ein Zeilenumbruch meist LF+CR ist.
; Start Html
Html$ = [[<dt class="autodoc"><b>Function</b></dt><dd>
Calculates the sine of the angle x.

<p>
</dd>
<dt class="autodoc"><b>Inputs</b></dt><dd>]]
; End Html


LF$ 		= Chr(10)
CR$ 		= Chr(13)
Pattern$	= "Function</b></dt><dd>([%w%s%p]+)<p>"

Html$ 	= ReplaceStr(Html$, LF$, "")
Html$	 	= ReplaceStr(Html$, CR$, "")

DebugPrint(PatternFindStrShort(Html$, Pattern$))
Wie man sieht, kann man auch mit Hollywood leserlich und effizient parsen. :D

Grüße, Michael


Nach oben
   
BeitragVerfasst: 14 Feb 2017, 20:43 
Offline
Schreiberling
Benutzeravatar

Registriert: 17 Okt 2007, 21:48
Beiträge: 1392
Postleitzahl: 4132
Land: Schweiz
Wohnort: Muttenz
Tipsi hat geschrieben:
Chr(10) ist der ASCII-Wert für Zeilenumbrüche (line feed).
Eher selten, kann aber auch vorkommen, dass statt line feed
Return benutzt wurde. Der ASCII-Wert in diesem Fall wäre Chr(13).
Also doch nicht eher selten. Das kommt davon, wenn ich mehr
auf dem Amiga in die Tiefe gehe als bei Windows.

Griessli
Tipsi


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite « 1 2

Alle Zeiten sind UTC


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Gehe zu: 

cron