/ / Zeichenkette-Initialen, die zu Regex passen - Regex

Strings Initialen entsprechen Regex - Regex

Ist es mit Regex möglich, die Initialen der Wörter in einer Zeichenfolge zu finden? Beispiel:

Ich möchte sagen, sagen wir, International Scrabble Association, aber es kann als ISA, Intl kommen. Scrabble Assoc. Usw. Idealerweise werden sie alle mit ISA übereinstimmen.

Machbar?

Antworten:

1 für die Antwort № 1

Wenn du fragst, ob es einen Weg gibt, es zu tunnativ und nur in regulären Ausdrücken, dann gibt es keine Möglichkeit, das zu tun. Sie müssen Ihre Zeichenfolge aufteilen und die Initialen extrahieren (vielleicht mit einer Regex) und dann eine neue Regex daraus konstruieren. Also hängt die Lösung natürlich von Ihrer Implementierung ab, aber hier ist ein Beispiel in PHP:

<?php
$str = "International Scrabble Assocation";
preg_match_all("/b(w)w*b/i", $str, $matches);
$regex = "/b" . implode("S*s*", array_map(strtoupper, $matches[1])) . "S*b/";
$tests = array("Intl. Scrabble Assoc.",
"Intl Scrabble Assoc",
"I.S.A",
"ISA",
"Intl. SA",
"intl scrabble assoc",
"i.s.a.",
"isa",
"lisa",
"LISA",
"LI. S. A.");
echo "The generated regex is $regex.nn";
foreach ($tests as $test)
{
echo "Does "$test" match? " . (preg_match($regex, $test) ? "Yes" : "No") . ".n";
}
?>

Ausgabe:

The generated regex is /bIS*s*SS*s*AS*b/.
Does "Intl. Scrabble Assoc." match? Yes.
Does "Intl Scrabble Assoc" match? Yes.
Does "I.S.A" match? Yes.
Does "ISA" match? Yes.
Does "Intl. SA" match? Yes.
Does "intl scrabble assoc" match? No.
Does "i.s.a." match? No.
Does "isa" match? No.
Does "lisa" match? No.
Does "LISA" match? No.
Does "LI. S. A." match? No.

Hier ist der Ideale wenn du damit herumspielen willst.