WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 04.01.2006, 11:56   #1
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard frage zu regular expressions

Code:
"/\/app\/(.*?)(\/.*|)$/"
folgendes ist mir dabei nicht ganz klar:

1.) warum wird der ausdruck (.*?) in eine klammer geschrieben? normalerweise bedeutet das ja, daß das ergebnis in einem zwischenspeicher landet, auf den man danach wieder zugreifen kann. in meinem fall findet ein solcher zugriff allerdings nicht statt, wozu also das hier?

2.) der ausdruck (.*?) sucht ja nach 0 bis n beliebigen Zeichen und zwar nicht greedy. welchen sinn hat dann aber das fragezeichen, wenn die suchergebnisse sowieso aus 0 bis n beliebigen zeichen bestehen? bricht die suche da nicht schon nach dem 1. zeichen ab? wenn ja, wäre ein (.{0,1}) da nicht besser?

3.) eine pipe kenne ich als OR, nur was bedeutet die pipe in (\/.*|)?

vielen dank im voraus.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 06.01.2006, 18:11   #2
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Meine Ideen (k.A. ob sie stimmen):
ad 1.) Ich schätz da gehts nur darum es zu gruppieren (das ist der eigentliche Zweck der (), das der Inhalt für später gespeichert wird ist "nur" ein goodie).
ad 2.) Ich glaube .* ist schon greedy, das Fragezeichen dient IMHO dazu das am Ende etwas übrig bleibt ("abcdefg" sollte auf /a(.*?)g/ aber nicht auf /a(.*)g/ matchen - da das .* bcdefg matcht und nichts "übrig" lässt).
ad 3.) k.A. ich kann keinen Unterschied zu (\/.*) erkennen.
Wie gesagt das ist nur das was ich mir denke, muß nicht stimmen.
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 06.01.2006, 23:42   #3
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

ich bin wirklich kein regex profi und vermute zu 3. nur:

vielleicht muss entweder .* folgen oder es folgt nichts mehr

mfg Thomas
T.dot ist offline   Mit Zitat antworten
Alt 07.01.2006, 11:41   #4
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Das denke ich auch, aber:
.* matcht sowieso 0 bis n, daher ist das "|nichts" überflüssig.

jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 07.01.2006, 13:16   #5
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard Re: frage zu regular expressions

Zitat:
Original geschrieben von RaistlinMajere
Code:
(\/.*|)$
Bedeutet dann, daß er entweder '/' mit beliebigen folgenden Zeichen oder nichts vor einem Zeilenende sucht. D.h. 'nichts' müßte er in allen Leerzeilen finden. Ansonsten würden Leerzeilen nicht angezeigt werden.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 12.01.2006, 15:44   #6
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

Zitat:
Original geschrieben von jak
ad 2.) Ich glaube .* ist schon greedy, das Fragezeichen dient IMHO dazu das am Ende etwas übrig bleibt ("abcdefg" sollte auf /a(.*?)g/ aber nicht auf /a(.*)g/ matchen - da das .* bcdefg matcht und nichts "übrig" lässt).
so wie ich das sehe, matcht /a(.*)g/ aber sehr wohl auch mit "abcdefg", sowie z.b. auch mit "aXXXg". sofern ist mir nicht ganz klar, was du mit dem "uebrigen" meinst. dient das fragezeichen zur abgrenzung? ich habe gegoogelt und in dem zusammenhang (.*?) habe ich rausgefunden, dass damit "nicht greedy" gesucht wird.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 12.01.2006, 20:34   #7
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Ich bin auch nur Laie was Regexp betrifft, mein Beispiel war schlecht gewählt. Ein besseres findest du hier:
http://de.wikipedia.org/w/index.php?...iges_Verhalten
Zitat:
Angenommen es wird auf den String "ABCDEB" der reguläre Ausdruck A.*B angewendet, so würde er den kompletten String "ABCDEB" matchen. Mit Hilfe des "non-greedy"-Quantors "*?" matcht der Ausdruck A.*?B die Zeichenkette "AB", bricht also die Suche nach dem ersten gefundenen "B" ab.
jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 12.01.2006, 23:15   #8
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

@jak: danke, aber das war mir eh klar, beschreibt ja nicht mehr als eine "nicht greedy"-suche.

ich denke ich hab jetzt auch verstanden, was damit in dem ursprünglichen regExp-ausdruck gemeint war.

statt "A" im beispiel habe ich halt hier "/app/", ansonsten verhält sich das ganze genauso und ich war nur durch die (wie mir nun klar ist eigentlich unnötige) klammernsetzung etwas verwirrt. richtig?
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 13.01.2006, 17:37   #9
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Ja, seh' ich genauso.

jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:17 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag