php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.07.2009, 18:57  
Neuer Benutzer
 
Registriert seit: 16.07.2009
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
Crashtest befindet sich auf einem aufstrebenden Ast
Standard RegEx Assertions über mehrere Zeilen

Hallo,

ist es möglich mittels Look-Arround Assertions ein Pattern zu definieren, welches mir zwar **foo** matched, aber z.B. **bar** in

Code:
Bla bla **foo**
...

{{{
bla bla bla **bar**
}}}
nicht?

Bislang habe ich das hier probiert:
Code:
(?<!\{{3})\*{2}.+?\*{2}(?!\}{3})
Was nicht funktioniert, wenn ich das richtig sehe, weil die Assertions nur für unmittelbar vorangehende bzw. folgende Ausrücke funktioniert, oder? Und ein .* in einer Assertion ist AFAIK nicht erlaubt.

Mit anderen Worten er würde **bar** {{{**bar**}}} nicht matchen, {{{bla**bar**}}} aber schon.

Gibts da eine Möglichkeit das mit RegEx zu realisieren?

Grüße

Geändert von Crashtest (16.07.2009 um 19:06 Uhr). Grund: **foo** vergessen
Crashtest ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.07.2009, 19:04  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

????? Häh? Von welchem Foo redest Du bitte? Von dem das nicht im Suchstring ist oder von dem, das nicht im Ausdruck ist?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 16.07.2009, 19:07  
Neuer Benutzer
 
Registriert seit: 16.07.2009
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
Crashtest befindet sich auf einem aufstrebenden Ast
Standard

Oh, hab ich das doch glatt vergessen
Crashtest ist offline   Mit Zitat antworten
Alt 16.07.2009, 19:07  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Code:
$regexp = '/\*\*foo\*\*/';
So?
Asipak ist offline   Mit Zitat antworten
Alt 16.07.2009, 19:09  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Was genau willst Du matchen? Eine dreizeilige Zeichenkette nach bla, die nicht bar heisst?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 16.07.2009, 19:14  
Neuer Benutzer
 
Registriert seit: 16.07.2009
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
Crashtest befindet sich auf einem aufstrebenden Ast
Standard

Also nochmal:
  1. Ich habe ein Pattern was mir **foo** matched (\*{2}.+\*{2}).
  2. Dieses soll aber nichts matchen, was innerhalb von {{{ und }}} ist. Also ein {{{ some text **foo** some text }}} soll es nicht matchen. Also so ne Art Escape Sequenz: "Berühre nichts was innerhalb von drei geschweiften Klammern ist."


Der Hintergrund ist folgender: Ich bin grad dabei ein Wikimarkup in meine Seite zu implementieren und möchte erreichen, dass Text der innerhalb von {{{ ... }}} steht, auch wenn es Wikisyntax ist, nicht geparsed wird.

Verständlicher?

Geändert von Crashtest (16.07.2009 um 19:17 Uhr).
Crashtest ist offline   Mit Zitat antworten
Alt 16.07.2009, 19:20  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Da davon auch

Zitat:
{{{ some }}} text **foo** some {{{ text }}}
betroffen wäre, behaupte ich mal, dieses Vorgehen ist unsinnig.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 16.07.2009, 19:30  
Neuer Benutzer
 
Registriert seit: 16.07.2009
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
Crashtest befindet sich auf einem aufstrebenden Ast
Standard

Ich hab grad noch ein bisschen rumgebastelt.

Code:
\{{3}[^\}{3}]+
matched mir folgendes Fettgedrucktes:

Beispieltext mit **ein paar** Dingen drin, die {{{ **nicht** gematched }}} werden sollen.
{{{
Diese können auch **mehrzeilig** sein.

}}}


So dachte ich mir, kann ich doch nun diese Pattern (exemplarisch) mit einem negativen look-behind ausschließen. Also

Code:
(?<!\{{3}[^\}{3}]+)\*{2}.+?\*{2}
Aber irgendwie funktioniert dies nicht so richtig... ich kann grad nicht nachvollziehen warum.
Crashtest ist offline   Mit Zitat antworten
Alt 16.07.2009, 19:34  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Was soll das

[^\}{3}]+

auch sein? Eine Klasse ist eine Klasse, ein Selektor ein Selektor und wie Du oben geschrieben hast, kannst DU in lookbehinds keine variablen Längen verwenden.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 16.07.2009, 19:58  
Neuer Benutzer
 
Registriert seit: 16.07.2009
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
Crashtest befindet sich auf einem aufstrebenden Ast
Standard

Hmm, ja, das ist richtig.

Mal ne allgemeine Frage: Wie negiere ich einen String? Also nicht einzelne Zeichen bzw. eine Klasse, sondern z.B.: Matche alles was nicht "aaa" ist.

//edit: So? ([^a]{3})

2. Frage: Wie kann ich PHP so austricksen, dass ein unbestimmter Quantor auch in einem Lookbehind funktioniert?

Geändert von Crashtest (16.07.2009 um 20:04 Uhr).
Crashtest ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Stream weiterleiten über socketserver PHPHP PHP Tipps 2009 3 15.07.2009 19:32
[Erledigt] Einzelnen DB-Eintrag über ID anzeigen Knutschi PHP Tipps 2009 6 26.03.2009 09:56
preg_match über mehrere Zeilen Nocta PHP Tipps 2009 12 21.03.2009 03:57
[Erledigt] Select über zwei Tabellen / Performanceproblem Wolla Datenbanken 20 15.06.2008 00:58
2 Regex in PHP kompatible Syntax übersetzen NoiZy PHP-Fortgeschrittene 6 07.04.2008 09:04
Regex Link Problem Broadcast PHP Tipps 2008 2 29.02.2008 16:30
RegEx findet Stringvorkommen nicht PHP Tipps 2007 6 08.12.2005 21:52
Nur zeilen der letzten x stunden über timestamp auslesen Datenbanken 2 20.06.2005 18:12
[Erledigt] Import einer *.sql-Datei über den mysql-client Datenbanken 2 25.05.2005 19:03
[Erledigt] MySQL Zeilen lassen sich nicht kategorisieren Datenbanken 3 24.05.2005 01:15
Preg_match über mehrere Zeilen PHP Tipps 2005 6 18.05.2005 13:07
Regex für attribute in quelltexten robo47 PHP Tipps 2005 6 27.01.2005 18:29
Seitenauswahl über Domain PHP Tipps 2004 4 10.09.2004 13:09
[Erledigt] mysql Abfrage über 2 hintereinander liegende Zeilen Datenbanken 4 01.08.2004 20:35
Umleitung über Meta-Angaben im Header abhängig vom Host PHP Tipps 2004 7 14.06.2004 12:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php regex assertions, regex mehrere zeilen, regex assertions, assertion mehrzeilig, pattern mehrere zeilen php, php regex assertations, regex mehrzeilig, php preg_match mehrzeilig, regex ueber mehrer zeilen, php assertions, preg_match mehrere zeilen, regex suche mehrer zeilen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum