AMIGA-RESISTANCE
https://forum.amiga-resistance.info/

String pattern ......ich verzweifle :(
https://forum.amiga-resistance.info/viewtopic.php?f=38&t=3514
Seite 2 von 2

Autor:  msu [ 11 Feb 2017, 20:27 ]
Betreff des Beitrags:  Re: String pattern ......ich verzweifle :(

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

Autor:  msu [ 12 Feb 2017, 15:31 ]
Betreff des Beitrags:  Re: String pattern ......ich verzweifle :(

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

Autor:  Tipsi [ 13 Feb 2017, 08:56 ]
Betreff des Beitrags:  Re: String pattern ......ich verzweifle :(

Salli msu

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

Griessli
Tipsi

Autor:  msu [ 13 Feb 2017, 20:23 ]
Betreff des Beitrags:  Re: String pattern ......ich verzweifle :(

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

Autor:  Tipsi [ 13 Feb 2017, 22:50 ]
Betreff des Beitrags:  Re: String pattern ......ich verzweifle :(

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

Autor:  msu [ 14 Feb 2017, 17:44 ]
Betreff des Beitrags:  Re: String pattern ......ich verzweifle :(

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

Autor:  Tipsi [ 14 Feb 2017, 20:43 ]
Betreff des Beitrags:  Re: String pattern ......ich verzweifle :(

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

Seite 2 von 2 Alle Zeiten sind UTC

Powered by phpBB® Forum Software © phpBB Limited

Deutsche Übersetzung durch phpBB.de