Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
FORUM: Spiele & Computer THEMA: [A] eine regexpression :)
AUTOR BEITRAG
Ged

RANG Prophet of Clanintern

#1 - 02.07 14:13

ich habe in einem dokument blöcke, die sich wiederholen
z.B.:
code:
26709
26709
26709

26709
26709
26709)

26709
26709
26709


die ziffern an sich sind in den blöcken unterschiedlich, aber dieser zeilenaufbau und auch die sich schließende klammer sind immer gleich

diesen block würde ich gerne mit einem zeilenumbruch ersetzen
mit welcher regexpression müßte ich danach suchen?
*al!ve* - will code for food

RANG Master of Clanintern

#2 - 02.07 17:52

PHP? Gibt Unterschiede in der Formulierung regulärer Ausdrücke, abhängig von der verwendeten Sprache.

Ich versteh nicht genau, was du eigentlich ersetzen möchtest. Ist das von dir zitierte ein Block oder sind das drei und du hast bei den ersten beiden nur die schließende Klammer vergessen?

Folgende Annahme:
1. Ziffern, beliebig viele, mindestens eine
2. Zeilenumbruch oder Leerzeichen (nennt sich "Whitespace"), mindestens einer
3. Ziffern, beliebig viele, minestens eine
4. Whitespace, mindestens einer
5. Ziffern, mindestens eine
6. Whiespace, mindestens einer
7. Ziffern, mindestens eine
8. Whitespace, mindestens einer
9. Ziffern, mindestens eine
10. schließende Klammer
11. Whitespace, mindestens einer
11. Ziffern, mindestens eine
12. Whitespace, mindestens einer
13. Ziffern, mindestens eine
14. Whitespace, mindestens einer
15. Ziffern, mindestens eine

Pattern für "Ziffern": d
Pattern für "Whitespace": s
Multiplikator für "Mindestens eine": +
Klammern deuten normalerweise Subpatterns an, müssen, wenn sie als String gemeint sind, mit einem Backslash markiert werden.


de.php.net/manual/de/regexp.reference.php
Teile "Meta-Characters" und "Backslash".



Ausprobiert und läuft:
PHP-code:
<pre><?php

$source 
'26709
26709
26709

26709
26709
26709)

26709
26709
26709'
;


$pattern '%\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\)\s+\d+\s+\d+\s+\d+%';
$replace 'Zeilenumbruch';

echo 
preg_replace($pattern$replace$source);


?>
Ged

RANG Prophet of Clanintern

#3 - 02.07 19:08

deluxe *Metallocenjongleur*

RANG Master of Clanintern

#4 - 04.07 10:41

alive: www.nichtlustig.de/comics/full/050601.jpg
*al!ve* - will code for food

RANG Master of Clanintern

#5 - 04.07 19:44

Das Pattern aus #3 lässt sich btw. noch n bissl komprimieren:
PHP-code:
<?php $pattern "%(\d+\s+){5}\d+\)(\s+\d+){3}%"?>


In geschweiften Klammern wird angegeben, wie oft die vorherige Phrase wiederholt werden muss.

Heißt soviel wie: "fünf mal (mindestens eine Ziffer gefolgt von mindestens einem Whitespace), dann mindestens eine Ziffer, dann eine schließende Klammer, dann drei mal (mindestens ein Whitespace gefolgt von mindestens einer Ziffer)".