Regulärer Ausdruck: Nur ein Teil des Patterns case-insensitive
Willi H.
- php
Guten Tag!
Folgendes Pattern matcht mit "foo" und "bar" in beliebiger Groß- und Kleinschreibung.
'~(foo|bar)~i'
Wie lautet die Syntax, wenn nur "bar" case-insensitive matchen soll?
Schöne Grüße vom Willi
Hi,
Folgendes Pattern matcht mit "foo" und "bar" in beliebiger Groß- und Kleinschreibung.
'~(foo|bar)~i'
Wie lautet die Syntax, wenn nur "bar" case-insensitive matchen soll?
http://www.php.net/manual/en/regexp.reference.internal-options.php
MfG ChrisB
Guten Tag, ChrisB!
http://www.php.net/manual/en/regexp.reference.internal-options.php
Danke sehr!
So wird demnach das Gewünschte erreicht:
'~(foo|bar(?i))~'
Schöne Grüße vom Willi
So wird demnach das Gewünschte erreicht:
'~(foo|bar(?i))~'
Ups, so natürlich:
'~(foo|(?i)(bar))~'
Stimmt das?
Hello Chris,
Folgendes Pattern matcht mit "foo" und "bar" in beliebiger Groß- und Kleinschreibung.
'~(foo|bar)~i'
Wie lautet die Syntax, wenn nur "bar" case-insensitive matchen soll?
http://www.php.net/manual/en/regexp.reference.internal-options.php
Spannende Zusatzfrage:
Wie schaltet man denn caseless wieder aus, wenn man es mit dem Inline-Modifier mitten im Muster eingeschaltt hat, es aber nicht bis zum Ende gelten soll?
Ist das nun ein Toggle Switch, oder nur ein eindeutiger Schalter?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi!
http://www.php.net/manual/en/regexp.reference.internal-options.php
Spannende Zusatzfrage:
Wie schaltet man denn caseless wieder aus, wenn man es mit dem Inline-Modifier mitten im Muster eingeschaltt hat, es aber nicht bis zum Ende gelten soll?
Das steht auf der verlinkten Seite beschrieben.
Lo!
Hello,
http://www.php.net/manual/en/regexp.reference.internal-options.php
Spannende Zusatzfrage:
Wie schaltet man denn caseless wieder aus, wenn man es mit dem Inline-Modifier mitten im Muster eingeschaltt hat, es aber nicht bis zum Ende gelten soll?Das steht auf der verlinkten Seite beschrieben.
Wo bitte? Ich bin wohl leider zu blind, es zu finden.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Guten Abend, Tom!
Wo bitte? Ich bin wohl leider zu blind, es zu finden.
User Contributed Notes: 2/2
Schöne Grüße vom Willi
Hello Willi,
Wo bitte? Ich bin wohl leider zu blind, es zu finden.
User Contributed Notes: 2/2
Da steht nur, wie man den Modifier nur für eine Gruppe innerhalb des Musters einschalten kann, aber nicht, wie man ihn wieder ausschalten kann.
Der Text in der Beschreibung ließ aber vermuten, dass man mit einem Modifier die Funktionalität einschalten und (ggf. mit einem anderen) die Funktion wieder ausschalten könne.
Das hat mir in Erinnerung gerufen, dass die Modifier (irgendwo) eigentlich Toggle-Schalter waren, also einmal ?i:xxxxx einschalten, nochmal ?i:xxxxx wieder ausschalten. Leider weiß ich nicht mehr, in welchem Zusammenhang und bei welcher Art Regular Expressions ich das gelesen hatte.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Guten Abend, Tom!
Da steht nur, wie man den Modifier nur für eine Gruppe innerhalb des Musters einschalten kann, aber nicht, wie man ihn wieder ausschalten kann.
Doch, dort steht:
?-<modifier>
Der Text in der Beschreibung ließ aber vermuten, dass man mit einem Modifier die Funktionalität einschalten und (ggf. mit einem anderen) die Funktion wieder ausschalten könne.
Kann man ja auch.
Einschalten:
?<modifier>:
Ausschalten:
?-<modifier>
Das hat mir in Erinnerung gerufen, dass die Modifier (irgendwo) eigentlich Toggle-Schalter waren, also einmal ?i:xxxxx einschalten, nochmal ?i:xxxxx wieder ausschalten. Leider weiß ich nicht mehr, in welchem Zusammenhang und bei welcher Art Regular Expressions ich das gelesen hatte.
Hast du denn meinen Beitrag von 18:49 Uhr nicht gelesen?
Schöne Grüße vom Willi
Hast du denn meinen Beitrag von 18:49 Uhr nicht gelesen?
Ich meine von 19:40 Uhr.
Hello,
Hast du denn meinen Beitrag von 18:49 Uhr nicht gelesen?
Ich meine von 19:40 Uhr.
Es ist, wie immer, nett, dass wior darüber gesprochen haben :-))
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Guten Tag, Tom!
Es ist, wie immer, nett, dass wior darüber gesprochen haben :-))
Das verstehe ich jetzt nicht. Erklärst du's mir?
Schöne Grüße vom Willi
Hallo,
Wo bitte? Ich bin wohl leider zu blind, es zu finden.
User Contributed Notes: 2/2
und im Text, ich zitiere
"It is also possible to unset these options by preceding
the letter with a hyphen"
Testen wir das Verhalten mit folgenem Codefragment:
$haystack = array(
'abcd',
'abCd',
'abCD',
'abcD');
$pattern = '/ab(?i)c(?-i)d/';
$result = array();
# Testen wir den RegEx
foreach ($haystack as $needle) {
$matches = array();
$match = '';
if (preg_match($pattern, $needle, $matches)) {
# es kann maximal ein Match geben :-)
$match = $matches[0];
}
$result[$needle] = $match;
}
# und schauen uns das Ergebnis an:
echo "<pre>\n";
foreach($result as $key => $value) {
echo $key, " => ", $value, "\n";
}
echo "</pre>\n";
/*
gibt folgendes aus:
abcd => abcd
abCd => abCd
abCD =>
abcD =>
*/
Passt!
Zusätzlich gilt, dass innerhalb eines Subpatterns die Änderung nur für das Subpattern gilt. Über diese Schiene kannst Du ebenfalls unterschiedliche Optionen nutzen.
Freundliche Grüße
Vinzenz
Guten Abend, Vinzenz!
und im Text, ich zitiere
"It is also possible to unset these options by preceding
the letter with a hyphen"
Natürlich, wo du recht hast, ... :-)
Testen wir das Verhalten mit folgenem Codefragment:
$haystack = array(
'abcd',
'abCd',
'abCD',
'abcD');$pattern = '/ab(?i)c(?-i)d/';
$result = array();# Testen wir den RegEx
foreach ($haystack as $needle) {
$matches = array();
$match = '';
if (preg_match($pattern, $needle, $matches)) {
# es kann maximal ein Match geben :-)
$match = $matches[0];
}
$result[$needle] = $match;
}# und schauen uns das Ergebnis an:
echo "<pre>\n";
foreach($result as $key => $value) {
echo $key, " => ", $value, "\n";
}
echo "</pre>\n";
/*
gibt folgendes aus:
abcd => abcd
abCd => abCd
abCD =>
abcD =>
*/
>
> Passt!
>
> Zusätzlich gilt, dass innerhalb eines Subpatterns die Änderung nur für das Subpattern gilt. Über diese Schiene kannst Du ebenfalls unterschiedliche Optionen nutzen.
Sehr schön! Mir gefällt dein Beispiel mit der Stecknadel im Heuhaufen. :-)
Ob man nun bei Verwendung von Set und Unset (?i) oder ?i: zum Einschalten und (?-i) oder ?-i zum Ausschalten verwendet, ist aber Jacke wie Hose, oder?
Schöne Grüße vom Willi
Mir gefällt dein Beispiel mit der Stecknadel im Heuhaufen. :-)
Huch, ist ja anscheinend gar nicht von dir.
Hi!
http://www.php.net/manual/en/regexp.reference.internal-options.php
Spannende Zusatzfrage:
Wie schaltet man denn caseless wieder aus, wenn man es mit dem Inline-Modifier mitten im Muster eingeschaltt hat, es aber nicht bis zum Ende gelten soll?
Das steht auf der verlinkten Seite beschrieben.
Wo bitte? Ich bin wohl leider zu blind, es zu finden.
Da steht gleich unter der Tabelle, dass man mit - eine Option ausschalten kann. Ob man das beliebig hin- und herschalten kann, ist nicht wirklich relevant, da man mindestens mit Subpattern seine Reichweite beschränken kann.
Lo!
Guten Tag, Tom!
Spannende Zusatzfrage:
Wie schaltet man denn caseless wieder aus, wenn man es mit dem Inline-Modifier mitten im Muster eingeschaltt hat, es aber nicht bis zum Ende gelten soll?
Wenn ich es richtig verstanden habe so:
'~((?i)(foo)|bar)~'
Oder so:
'~(?i:foo?-i|bar)~'
Ist das nun ein Toggle Switch, oder nur ein eindeutiger Schalter?
?i ein eindeutiger Schalter, ?i: und ?-i auch, wobei man beide zusammengenommen als Toggle Switch betrachten könnte.
Schöne Grüße vom Willi