| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: [RegEx] Zeichenketten finden, welche "foo" enthalten, ABER NICHT "bar" im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige ich versuche folgendes mit einem RegEx abzubilden: der String soll "foo" enthalten, darf aber weder irgendwo davor noch irgendwo ...
![]() |
| | #1 (permalink) |
| Member of Honour ![]() | [RegEx] Zeichenketten finden, welche "foo" enthalten, ABER NICHT "bar" Anzeige ich versuche folgendes mit einem RegEx abzubilden: der String soll "foo" enthalten, darf aber weder irgendwo davor noch irgendwo danach "bar" enthalten Code: foo tralalala moooh --> match! tralala foo lalelu --> match! tralala bar foo lalelu --> NO! bar tralala foo lalelu --> NO! tralala foo bar lalelu --> NO! tralala foo lalelu bar --> NO! Habe bisher einige Foren durchstöbert... ohne Erfolg... mein Ziel ist es, einen String zu manipulieren, dessen Regeln mittels eines assoziativen Arrays (regex=>replace) definiert werden... daher kommt also ein Aufsplitten in einzelne Abfragen nicht in Frage. Aber ich vermute fast, dass ich die Idee aufgeben muss... aber vielleicht findet sich hier noch ein schlauer Kopf, der 'ne RegEx-Lösung formulieren kann... Geändert von beavisbee (05.09.11 um 14:45 Uhr) Grund: marked as solved |
| | |
| | #2 (permalink) |
| Registriert seit: 20.07.06 ![]() Likes: 21 | Ich hätte eine Lösung ohne Regex (soweit bar nicht mit anderen Buchstaben vorkommt z.B. barab: Pseudo-Pseudocode ![]() string = "foo tralala bar buz" string.split(" ") //->{"foo", "tralala", "bar", "buz"} if "foo" in array and not "bar" in array: tu es else lass es |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Member of Honour ![]() | wie gesagt: so ein Vorschlag bringt mir überhaupt nix und selbst das Aufsplitten in einzelne Ausdrücke bringt mich nicht weiter, da im Endeffekt einfach ein Array durchlaufen werden soll, in dem verschiedene Ersetzungs-Regeln durchlaufen werden sollen... Daher bitte nur Lösungen, wie man das Ganze in einem RegEx formulieren kann... (oder logische Erklärungen, warum es überhaupt nicht möglich ist, falls dem so wäre) |
| | |
| | #4 (permalink) | |
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Zitat:
Code: #!/usr/bin/env perl
use strict;
use warnings;
my @lines = (
"foo tralalala moooh",
"tralala foo lalelu",
"tralala bar foo lalelu",
"bar tralala foo lalelu",
"tralala foo bar lalelu",
"tralala foo lalelu bar");
foreach (@lines) {
if($_ =~ m/(?!.*bar)^.*foo/) {
print $_ . " TRUE\n";
}
} Code: mime@kira[16]: ~ 0)$ perl /tmp/bla.pl foo tralalala moooh TRUE tralala foo lalelu TRUE Micha
__________________ http://www.openvas.org | |
| | |
| | #5 (permalink) |
| Member of Honour ![]() | Danke, du bist mein Held! PHP-Code: Code: martin@ThinkTux510:~$ php test.php foo tralalala moooh - MATCH tralala foo lalelu - MATCH tralala bar foo lalelu - FAIL bar tralala foo lalelu - FAIL tralala foo bar lalelu - FAIL tralala foo lalelu bar - FAIL |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |