Deutsch

Text- und Alltagswerkzeuge · Text-Toolkit

So funktioniert die Ganzwortsuche: Wortgrenzen und das Katze|Hund-Problem

· Wie es funktioniert

regulärer Ausdruck Suchen und Ersetzen Textbearbeitung

Die Wörter Katze und Hund, die beim Verketten Grenzen überschreiten, bleiben unverändert
Original-ToolAcre-Vektorillustration

Erklärt, was eine Wortgrenze in regulären JavaScript-Ausdrücken ist, warum „cat“ nicht in „concatenate“ passen darf und warum eine Alternation wie cat|dog gruppiert werden muss, bevor Grenzen hinzugefügt werden.

Die Umbenennung, die „verketten“ geändert hat – warum ein einfaches Suchen und Ersetzen eines kurzen Wortes längere Wörter beschädigt

Eine Produktumbenennung sieht harmlos aus, bis ein Kurzname in nicht verwandten Wörtern auftaucht. Das Ersetzen jedes Vorkommens von `cat` durch `lynx` ändert `concatenate` in `conlynxenate`, auch wenn kein Editor beabsichtigte, einen Teil dieses Verbs umzubenennen. Eine Trefferanzahl allein kann das Dokument nicht schützen, wenn die Suchregel zu weit gefasst ist.

Der Ganzwortabgleich schränkt die Regel ein, bevor eine Ersetzung erfolgt. Wenn Sie in ToolAcre „Ganzes Wort“ aktivieren, ist das eigenständige Wort `cat` zulässig, während die gleichen Buchstaben in `concatenate` unberührt bleiben. Die Unterscheidung ist eher strukturell als wörterbuchbasiert: Die Engine für reguläre Ausdrücke überprüft die Zeichen direkt neben jeder möglichen Übereinstimmung.

Was \b bedeutet – die Position mit der Breite Null zwischen einem Wortzeichen und einem Nicht-Wortzeichen

In einem regulären JavaScript-Ausdruck markiert `` eine Wortgrenze mit der Breite Null. Es werden keine Buchstaben, Leerzeichen oder Satzzeichen benötigt. Stattdessen gelingt dies an einer Position, an der eine Seite ein Wortzeichen ist und die andere Seite nicht, einschließlich des Anfangs oder Endes des Textes, wenn das angrenzende Zeichen als Wortzeichen qualifiziert ist.

Die JavaScript-Kategorie `w` liefert die relevanten Wortzeichen für diese Implementierung: ASCII-Buchstaben, Ziffern und Unterstrich. Daher stimmt `cat` mit `cat` neben Leerzeichen, Kommas oder Zeilenenden überein, nicht jedoch mit dem Segment `cat` innerhalb von `concatenate`, da beide Seiten dieses Segments durch Wortzeichen fortgesetzt werden und dort keine Grenze besteht.

Ganzes Wort im Literalmodus – der Suchtext wird zuerst maskiert und dann in Grenzen eingeschlossen

Wenn Regex deaktiviert ist, maskiert ToolAcre zunächst jedes reguläre Ausdrucks-Metazeichen im Suchtext. Ein Punkt bleibt ein wörtlicher Punkt, Klammern bleiben wörtliche Klammern und ein Pluszeichen bleibt ein Pluszeichen. Erst nach diesem Escape-Schritt wird die resultierende Quelle mit einem vollständigen Wort umbrochen, sodass Benutzerzeichensetzung nicht stillschweigend zur Regex-Syntax werden kann.

Der Wrapper ist `(?:… )` ohne den angezeigten Raum: Der innere `(?:…)` ist eine nicht einfangende Gruppe. Für ein einfaches Literal wie `cat` ist der Effekt äquivalent zu `cat`. Die Gruppierung ist weiterhin wichtig, da ein Kompilierungspfad einfache Begriffe und kompliziertere Alternativen sicher verarbeiten muss, ohne die Nummerierung der Erfassungsgruppen zu ändern.

Ganzes Wort im Regex-Modus – warum cat|dog als Gruppe begrenzt werden muss oder die Grenze nur an einen Zweig bindet

Der Regex-Modus lässt das eingegebene Muster intakt, aber „Ganzes Wort“ gruppiert es immer noch, bevor Grenzen hinzugefügt werden. Für `cat|dog` kompiliert ToolAcre die konzeptionelle Form `(?:cat|dog)`. Beide Alternativen müssen daher an Wortgrenzen beginnen und enden, sodass eigenständiges `cat` und eigenständiges `dog` nach derselben Regel übereinstimmen.

Ohne diese Gruppe würde sich `cat|dog` in zwei Zweige aufteilen: Eine linke Grenze würde nur `cat` einschränken, während eine rechte Grenze nur `dog` einschränken würde. Der Wechsel hat eine niedrigere Priorität als die umgebende Sequenz. Beim Gruppieren werden beide Grenzaussagen auf die gesamte Auswahl angewendet, anstatt eine Aussage ungleichmäßig zu verteilen.

Funktioniertes Beispiel – Umbenennen eines Produkts in einem Dokument mit der Option „Ganzes Wort“ und Überprüfen der Ersetzungsanzahl anhand der Erwartungen

Fügen Sie eine repräsentative Passage ein, die `cat`, `dog`, `concatenate`, `dogged` und Satzzeichen wie `cat, dog.` enthält. Geben Sie `cat|dog` ein, aktivieren Sie Regex und Ganzes Wort und führen Sie „Alle durch den neuen Produktnamen ersetzen“ aus. Die beiden eigenständigen Tierwörter sollten sich ändern; Die längeren Wörter sollten genau so bleiben, wie sie waren.

Lesen Sie die gemeldete Ersetzungsanzahl, bevor Sie die Änderung akzeptieren. Wenn das Dokument über drei bekannte eigenständige Referenzen verfügt, das Tool jedoch zwei oder zwölf meldet, wählen Sie „Rückgängig“ und überprüfen Sie die Beispielkontexte. ToolAcre zählt Übereinstimmungen, bevor die Standardzeichenfolgenersetzung aufgerufen wird. Die angezeigte Gesamtzahl ist daher eine praktische Überprüfung der von Ihnen tatsächlich kompilierten Suchregel.

Wo Wortgrenzen Sie überraschen – die Wortzeichen von JavaScript sind ASCII-Buchstaben, Ziffern und Unterstriche, daher müssen akzentuierte und nicht-lateinische Wörter getestet werden

Diese Grenzen implementieren kein mehrsprachiges Wörterbuch oder keinen Unicode-Textsegmentierungsalgorithmus. Da akzentuierte Buchstaben und nicht-lateinische Schriften nicht in die hier verwendete Wortkategorie im ASCII-Stil fallen, kann „Ganzes Wort“ Null zurückgeben oder überraschende Kantenpositionen für Begriffe wie `café` erzeugen. Satzzeichen innerhalb eines Suchbegriffs können zu derselben Nichtübereinstimmung führen.

Testen Sie vor einer Massenbearbeitung die genaue Sprache und Rechtschreibung, insbesondere bei Namen, die Akzente, Apostrophe oder Bindestriche enthalten. Eine Grenzzusicherung vergleicht nur benachbarte Zeichenkategorien; Es weiß nicht, ob Typografie ein menschliches Wort bildet. Wenn das Beispiel fehlschlägt, verwenden Sie einen speziell für diese Umgebung entwickelten regulären Ausdruck, anstatt dem Kontrollkästchen zu vertrauen.

Wo JavaScript-Wortgrenzen Sie überraschen: Wortzeichen im ASCII-Stil sind keine sprachlichen Wörter

Das Tool bietet eine separate Option zur Berücksichtigung der Groß- und Kleinschreibung, entgegen der Annahme, dass die Schnittstelle keine Groß-/Kleinschreibung bietet. Durch das Löschen wird die JavaScript-Flagge hinzugefügt, bei der die Groß-/Kleinschreibung nicht beachtet wird. Die Implementierung verwendet jedoch nur den globalen Abgleich plus optionale Groß-/Kleinschreibung; Es werden keine Unicode-, Multiline-, Dot-All-, Sticky- oder andere Flags hinzugefügt.

Dieser Artikel verwandelt `` auch nicht in eine Unicode-fähige Grenze und löst auch keine sprachspezifische Tokenisierung. JavaScript-Eigenschafts-Escapes sind hier kein Ersatz, da das Tool keine Muster mit dem Unicode-Flag kompiliert. Erstellen Sie für mehrsprachige redaktionelle Arbeiten explizite Testfälle und wählen Sie ein Muster, das von der verwendeten Browser-Engine unterstützt wird.

Falloptionen sind im Tool vorhanden; Unicode-fähige Wortgrenzen tun dies nicht

Ganzes Wort ist eine Kompositionsregel, keine zweite Ersatzmaschine. Der Literalmodus entgeht der Suche; Der Regex-Modus behält es bei. dann ist jedes Ergebnis von derselben nichteinfangenden Gruppe und zwei Grenzen umgeben. Diese Reihenfolge schützt die wörtliche Zeichensetzung und sorgt dafür, dass sich Regex-Alternativen wie `cat|dog` wie ein begrenzter Ausdruck verhalten.

Verwenden Sie die Option, wenn eigenständige Begriffe im ASCII-Stil die beabsichtigten Ziele sind, und behandeln Sie dann die Ersetzungsanzahl und die Rückgängig-Steuerung als Schutzmaßnahmen und nicht als Dekoration. Öffnen Sie „Suchen und Ersetzen“ von ToolAcre, testen Sie die Abwechslung anhand eigenständiger und eingebetteter Beispiele und wenden Sie sie erst dann auf das gesamte Dokument an, wenn sich diese Beispiele wie erwartet verhalten.