 |
Willkommen im TP Hilfe Forum unter Traum-Projekt.com
Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen und Fragen stellen, privat mit anderen TPlern kommunizieren, an Umfragen teilnehmen und gratis Fotos runterladen. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Wir würden uns freuen, Dich in einer der freundlichsten Communitys als Mitglied begrüßen zu dürfen. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support Team.
Viel Spaß bei Traum-Projekt.com
|
13.01.2006, 08:54
|
#91
|
|
TP-Newbie
Registriert seit: Jan 2006
|
Hallo,
dachte das hätte ich getan.
Zitat:
Ich möchte vollgendes erreichen:
In einer beliebigen Zeile soll die Zeichenfolge pDhMc gesucht werden, von dort aus soll nach links jedes Zeichen welches nicht ein Leerzeichen, ein Komma, ein Rufzeichen oder ein Minus ist bis max. zum Zeilenanfang ebenfalls gesucht werden.
|
Habe die lösung allerdings bereits gefunden.
Vielen Dank
Gruß
Svenfranzisko
|
|
|
13.01.2006, 09:24
|
#92
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
na dann lass uns auch teilhaben 
|
|
|
14.01.2006, 13:45
|
#93
|
|
TP-Supporter
Registriert seit: Dec 2005
|
Zitat:
|
Zitat von webmichl
Warum nicht - wenn Du vorher auch die Lösungen der Aufgaben kennst.... 
|
k, dann stell ich hiermit mal 2 aufgaben:
1. Ich möchte prüfen, ob eine beliebige IP in einer bestimmten IP Range vorhanden ist. Soll heißen, ich will wissen, ob z.b. eine IP in der IP Range:
192.0-255.0-255.1 liegt, oder nicht
2. Ich möchte mit einem eizigen preg_replace() BB-Codes für [i ]...[/i ], [u ] ...[/u ] und [b ]...[/b ] (leerzeichen mache ich hier, da die dinger sonst wieder vom forum gematcht werden  ) in html code bringen. dabei sollte beachtet werden, dass ungeschlossene bbcodes nicht ersetzt werden dürfen, und dass der regexp nicht gierig ist. beispiel zu letzterem:
[b ]...[/b ] skksk[b ]kasd[/b ]
soll zu
... skksb kasd
und nicht zu
... skksb kasd
werden 
|
|
|
25.01.2006, 18:54
|
#94
|
|
TP-Supporter
Registriert seit: Dec 2005
|
och leute, kommt schon ...
|
|
|
20.06.2006, 11:46
|
#95
|
|
TP-Junior
Registriert seit: Jun 2006
|
Frage zu RegEx-Problem
Hallo, (ich bin neu hier)
ich befasse mich nun seit kurzem mit Regulären Ausdrücken und habe folgendes Problem:
Ich möchte Zahlen -- genauer: die Hits auf eine Homepage -- aus einer HTML-Datei matchen.
Die HTML-Datei sieht folgendermaßen aus:
Code:
</TR>
<TR BGCOLOR="FFFFFF">
<TD ALIGN ="LEFT" >
<FONT SIZE=2 FACE="Arial" COLOR="000000"><B>Anzahl der Hits auf Homepage</B></FONT></TD>
<TD ALIGN ="LEFT" >
<FONT SIZE=2 FACE="Arial" COLOR="000000">35,738</FONT></TD>
</TR>
Den Wert 35,738 möchte ich matchen und später in 35.738 umwandeln und in eine Textdatei schreiben.
Das ist aber erst mal Nebensache, es geht vorerst nur um den Match.
Die Hits variieren natürlich und haben folgende Form:
- 0 Hits
- 11 Hits
- 222 Hits
- 3,333 Hits
- 44,444 Hits
- 555,555 Hits
- 6,666,666 Hits
Ich hab folgendes festgestellt:
- der kleinste Wert ist 0
- bei mehr als drei Ziffern wird ein Komma als 1.000er-Trennzeichen gesetzt
- die Zahl kann endlich groß werden
- aufgrund der HTML-Tags ist der Wert immer von > und < umschlossen, was die Suche erleichtert
Mein Ansatz ist folgender:
Die letzten drei Stellen des Wertes. Kann Werte von 0 (muss mindestens vorkommen) bis 999 (maximal) annehmen.
Wie baue ich das Komma/Trennzeichen mit ein? Und dann darf ja der Wert immer um jemals 1-3 Ziffern erweitert werden, unter Beachtung der Trennung der Blöcke durch ein Komma.
Neuer Ansatz:
Code:
[,?[:digit:]{1,2,3}]*
Geändert von Digel (20.06.2006 um 12:03 Uhr).
|
|
|
20.06.2006, 12:27
|
#96
|
|
TP-Junior
Registriert seit: Jun 2006
|
Hallo Digel,
wie wäre es mit sowas hier:
\>[^\d,]*([\d,]+)[^\d,]*\<
Gruß
|
|
|
20.06.2006, 12:39
|
#97
|
|
TP-Junior
Registriert seit: Jun 2006
|
Zitat:
|
Zitat von Barney
Hallo Digel,
wie wäre es mit sowas hier:
\>[^\d,]*([\d,]+)[^\d,]*\<
Gruß
|
Meine eben verbesserte Version sieht folgendermaßen aus:
Code:
>[,?[:digit:]{1,2,3}]*<
Wenn ich deinen RegEx richtig verstehe -- habe ihn mit Visual REGEX 3.0 gestestet --, dann legt er die Zahl in ein Subpattern von Hits ab, oder?
|
|
|
20.06.2006, 13:00
|
#98
|
|
TP-Junior
Registriert seit: Jun 2006
|
Zitat:
|
Zitat von Digel
Wenn ich deinen RegEx richtig verstehe -- habe ihn mit Visual REGEX 3.0 gestestet --, dann legt er die Zahl in ein Subpattern von Hits ab, oder?
|
Jop, richtig.
Gruß
|
|
|
20.06.2006, 13:09
|
#99
|
|
TP-Junior
Registriert seit: Jun 2006
|
Zitat:
|
Zitat von Barney
Jop, richtig.
Gruß
|
Hmmm, weiß nicht, ob ich das so gebrauchen kann, da es im (beigefügten) HTML-Code ja anders ist. Da steht Anzahl der Hits auf Homepage ja weit vor dem Wert. Das andere war ja nur zur Verdeutlichung der Formatierung.
Na ja, ich probier mal weiter ...
|
|
|
21.06.2006, 10:43
|
#100
|
|
TP-Junior
Registriert seit: Jun 2006
|
Hmmm, mit
Code:
\>([,?[:digit:]{1,2,3}]*)\<
matche ich wie folgt:
Code:
<TD ALIGN ="LEFT" >
<FONT SIZE=2 FACE="Arial" COLOR="000000"><B>Anzahl der Hits auf Homepage</B></FONT></TD>
<TD ALIGN ="LEFT" >
<FONT SIZE=2 FACE="Arial" COLOR="000000">35,738</FONT></TD>
Die Tag-Zeichen in rot, der Wert in blau.
Wenn ich das richtig sehe, ist der blaue Match ein Subpattern. Nun möchte ich folgendes erreichen. Er soll nur auf -- in diesem Fall -- die 35,738 matchen, wenn davor Anzahl der Hits auf Homepage steht. Dann soll er Anzahl der Hits auf Homepage: 35,738 in hits.txt schreiben.
Damit komme ich noch nicht zurecht.
Problem für mich also: Wie verkette -- verknüpfe/verbinde? -- ich
Code:
/Anzahl der Hits auf Homepage/
mit
Code:
>([,?[:digit:]{1,2,3}]*)\<
?
Realisiere ich das mit einem Positive Lookahead, dass vor dem Wert Anzahl der Hits auf Homepage stehen muss?
Folgender RegEx soll den Wert nur ausspucken, wenn die Zeichen > und < davor bzw. dahinter stehen.
Code:
(?<=\>)([,?[:digit:]{1,2,3}]*)(?=\<)
Aber irgendwie funktioniert das nicht.
Wenn ich mit sed arbeite ...
Ich möchte einfach nur meine Matches in eine andere Datei schreiben. Zum Beispiel alle Zahlen aus einem Text.
/[:digit:]/
Und dann? Irgendwas mit "eingabe.txt > ausgabe.txt"?
Geändert von Digel (21.06.2006 um 17:23 Uhr).
|
|
|
11.07.2006, 14:11
|
#101
|
|
TP-Junior
Registriert seit: Jun 2006
|
Mein RegEx sieht jetzt so aus:
Code:
[\d{1,3},?]*[[:digit:]]{1,3}(?=\<)|[[:digit:]]{1,3}(?=\<)
Ich möchte nun mithilfe von sed, dass das Muster durch z. B. Bla, bla, bla ersetzt wird.
Code:
s/[\d{1,3},?]*[[:digit:]]{1,3}(?=\<)|[[:digit:]]{1,3}(?=\<)/Bla, bla, bla/g
Funktioniert aber nicht.
|
|
|
02.10.2007, 16:45
|
#102
|
|
TP-Junior
Registriert seit: Oct 2007
|
doppelpost.. sry
|
|
|
02.10.2007, 16:47
|
#103
|
|
TP-Junior
Registriert seit: Oct 2007
|
Dieseregulären AUsdrücke sind ja echt der Hit. In jedem Program was mit Stringmanipulation zu tun hat und wo es sinnvoll ist setze ich sie ein. Da ich nicht nur mit Blumen kommen möchte hier eine kleine Frage:
".*" Kann recht nützlich sein, keine frage. Aber manchmal ist es eben im Weg.
Ein Beispiel:
Mein String:
Code:
"<span class="editsection">[<a href="index.php/component/option,com_staticxt/&Itemid=28staticfile,~w~index.php/title,55/amp;action,edit/amp;section,5" title="Abschnitt bearbei">Bearbeiten</a>]</span>"
So ich würde jetzt gerne den Bereiche zwischen den "[" und "]" finden. Dazu benutze ich folgenden RegEx:
Leider sucht dieser Ausdruck bis zum letzten "]" den es im String gibt und nicht zum zu dem zuerst aufkommenden. Ich nehme an dies ist so weil ".*" auch für zwischendurch vorkommende "]" gilt. Ich will den String aber nur bis zum ersten "]" haben. wie gehe ich da am besten vor?
|
|
|
02.10.2007, 16:53
|
#104
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Hi HeartTen,
zunächst mal preg_match lesen und verstehen. Als Suchmuster sollte ein reichen.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
|
|
02.10.2007, 17:23
|
#105
|
|
TP-Junior
Registriert seit: Oct 2007
|
Hmm, also eins erstmal vorweg: ich programmiere mit Java.
Der Reguläre Ausdruck
Findet meines wissens alles was:
-Mit einem "/" beginnt und mit einem "/" endet.
-Dazwischen darf eins der Zeichen "." und "*" stehen.
Die eckigen Klammern geben doch an welches Zeichen auftreten darf.
Meine Anforderungen sind aber..
Finde einen String der:
-Mit "[" anfängt und mit dem ersten gefundenen "]" aufhört
Bei
Code:
blabla[b123]b666]bu
dürfte er nur folgendes ausspucken:
und nicht:
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 07:22 Uhr.
|
 |