Angenommen, wir haben 3 Strings:Streicher-Set Regex Abfrage wie Charsets für Match Jede Bestellung
lorem,ipsum,set
und Code, Eingabezeichenfolgen und die erwarteten Ergebnisse sind:
$array = array(
"lorem" => "lorem",
"loremipsum" => "loremipsum",
"loremipsumset" => "FOUND!",
"abc loremipsumset xyz" => "abc FOUND! xyz",
"ipsumsetlorem" => "FOUND!",
"ipsumloremset" => "FOUND!",
"setipsumloremsetset" => "FOUND!",
"loremloremipsumipsumsetset" => "FOUND!", // tough one...
"lorem ipsum set" => "lorem ipsum set",
) ;
foreach ($array as $string => $expect) {
$result preg_replace($REGEX,'FOUND!','abacdaef');
echo ($result == $expect ? 'THANKS!!' : '...') ;
echo '<br>' ;
}
Drei-String haben, zusammen zu sein in bestimmten Eingang, aber mit jeder Bestellung ...
"/((lorem|ipsum|set)+(lorem|ipsum|set)+(lorem|ipsum|set)+)+/"
Dies funktioniert irgendwie, aber es ist passend auch mit „lorem loremorem ",
Welche Art von Regex kann damit umgehen? oder gibt es einen einfachen Weg?
Eigentlich, warum nicht nur benutzen ' "/ (?: lorem | ipsum | set) + /"'? –
@ WiktorStribiżew Ich denke, einige der Beispiele, die zur Verfügung gestellt werden, implizieren, dass Strings, die nicht alle Teilstrings enthalten, nicht übereinstimmen sollten. Zum Beispiel glaube ich nicht, dass "Lorem" übereinstimmen sollte. –
Ja, aber die erste Regex ist dann nicht angemessen. Es sollte ['([abc]) (?! \ 1) ([abc]) (?! \ 1 | \ 2) [abc]'] sein (https://regex101.com/r/fL1fR0/1) . Das bedeutet auch, dass es für eine Regex keine gute Arbeit ist. Der zweite muss ['(lorem | ipsum | set) (?! \ 1) (lorem | ipsum | set) (?! \ 1 | \ 2) (?: lorem | ipsum | set)'] sein (https: //regex101.com/r/fL1fR0/2). Das ist nicht leicht erweiterbar im Falle von Dutzenden von Saiten. –