Regulärer Ausdruck macht mir Probleme
Markus1
- php
Hallo,
ich wollte den Text zwischen den ersten beiden /.
Dies hat mit
$rc = preg_match ('/^\/(.*)\/.*$/U', $hf1, $treffer);
geklappt.
Das Gleiche aber mit den Begrenzern :
$rc = preg_match ('/^\\(.*)\\.*$/U', $hf1, $treffer);
funktioniert nicht.
Woran liegt dies?
Hi,
Das Gleiche aber mit den Begrenzern :
$rc = preg_match ('/^\(.)\.$/U', $hf1, $treffer);
> funktioniert nicht.
> Woran liegt dies?
Weil du kein \\ in deinem regulären Ausdruck drin stehen hast, sondern nur \
MfG ChrisB
--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
Hi,
Das Gleiche aber mit den Begrenzern :
$rc = preg_match ('/^\(.)\.$/U', $hf1, $treffer);
> > funktioniert nicht.
> > Woran liegt dies?
>
> Weil du kein \\ in deinem regulären Ausdruck drin stehen hast, sondern nur \
>
Verstehe ich nicht. Es sind doch \\ wie vorher beim \/
Tach!
Weil du kein \ in deinem regulären Ausdruck drin stehen hast, sondern nur \ Verstehe ich nicht. Es sind doch \ wie vorher beim /
Im PHP-String, ja. Aber das kommt nicht im Muster an, weil PHP das schon vorher für seinen String verbraten hat. Siehe http://php.net/manual/en/regexp.reference.escape.php
dedlfix.
Hi,
Blackout? Nachfolgendes funktioniert auch nicht.
<?php
$hf1='c:\tst0\tst1\tst2\test.txt'; // Gesucht tst0
print ($hf1 . '<br>');
$rc = preg_match ('/^\\\\(.*)\\\\.*$/U', $hf1, $treffer);
$Name = $treffer[1];
echo "Name: $Name*"; // => Name: *
?>
Tach!
Blackout? Nachfolgendes funktioniert auch nicht.
$hf1='c:\tst0\tst1\tst2\test.txt'; // Gesucht tst0
$rc = preg_match ('/^\\(.*)\\.*$/U', $hf1, $treffer);
Der zu durchsuchende String passt auch nicht auf das Muster. Er fängt nicht mit einen \ an.
dedlfix.
gudn tach!
Blackout? Nachfolgendes funktioniert auch nicht.
$hf1='c:\tst0\tst1\tst2\test.txt'; // Gesucht tst0
$rc = preg_match ('/^\\(.*)\\.*$/U', $hf1, $treffer);Der zu durchsuchende String passt auch nicht auf das Muster. Er fängt nicht mit einen \ an.
damit wenigstens das archiv eine loesung dafuer bietet:
statt
'/^\\(.*)\\.*$/U'
besser:
'/[1]*+\\([^\\]*+)\\/'
also [string-begin][mind. 0 nicht-backslashes][backslash][mind. 0 nicht-backslashes, merken][backslash][reststring interessiert nicht].
(und vermutlich macht
'/\\([^\\]*+)\\/'
dasselbe, aber ich weiss nicht, ob die regexp-specs das hergeben.)
prost
seth
^\\ ↩︎