Zum Hauptinhalt springen
Reguläre Ausdrücke werden in Wörterbüchern auf Basis regulärer Ausdrücke verwendet, um festzulegen, welche Wörter in einer Sprache zulässig sind und welche nicht.

Regeln für reguläre Ausdrücke

Das Alphabet der regulären Ausdrücke in ABBYY FineReader Engine ist in der folgenden Tabelle beschrieben:
ElementnameKonventionelles Zeichen für reguläre AusdrückeVerwendungsbeispiele und Erläuterungen
Beliebiges Zeichen.c.t — steht für Wörter wie „cat“, „cot“
Zeichen aus einem Zeichenbereich[][b-d]ell — steht für Wörter wie „bell“, „cell“, „dell“ [ty]ell — steht für die Wörter „tell“ und „yell“
Zeichen außerhalb eines Zeichenbereichs[^][^y]ell — steht für Wörter wie „dell“, „cell“, „tell“, schließt aber „yell“ aus [^n-s]ell — steht für Wörter wie „bell“, „cell“, schließt aber „nell“, „oell“, „pell“, „qell“, „rell“ und „sell“ aus
Oder\c(a\u)t — steht für die Wörter „cat“ und „cut“
0 oder mehr aufeinanderfolgende Vorkommen*10* — steht für die Zahlen 1, 10, 100, 1000 usw.
1 oder mehr aufeinanderfolgende Vorkommen+10+ — erlaubt die Zahlen 10, 100, 1000 usw., schließt aber 1 aus.
Buchstabe oder Ziffer[0-9a-zA-Z][0-9a-zA-Z] — erlaubt ein einzelnes Zeichen; [0-9a-zA-Z]+ — erlaubt ein beliebiges Wort
Lateinischer Großbuchstabe[A-Z]<br />
Lateinischer Kleinbuchstabe[a-z]<br />
Kyrillischer Großbuchstabe[А-Я]<br />
Kyrillischer Kleinbuchstabe[а-я]<br />
Ziffer[0-9]<br />
Leerzeichen[\s]<br />
Systemzeichen@<br />
Wort aus dem Wörterbuch@(Dictionary)Der Parameter Dictionary legt den Pfad zum Benutzerwörterbuch fest, aus dem Wörter übernommen werden müssen. Linux-Pfadbeispiel: @(/opt/MyDictionary.amd) macOS-Pfadbeispiel: “/Users/user/Documents/MyDictionary.amd” Unter Windows müssen Backslashes im Pfad verdoppelt werden. Zum Beispiel: @(D:\MyFolder\MyDictionary.amd). <Note> Einige Programmiersprachen (z. B. C++) erfordern, dass Backslashes in String-Literalen maskiert werden. In diesem Fall benötigen Sie zwei maskierte Backslashes, was zu einem vierfachen Backslash führt. Das obige Beispiel sieht in C++ dann wie folgt aus: </Note> L"@(D:\\\\\\\\MyFolder\\\\\\\\MyDictionary.amd)"
  • Einige der in regulären Ausdrücken verwendeten Zeichen sind „Hilfszeichen“, d. h., sie werden für Systemzwecke verwendet. Wie Sie der obigen Liste entnehmen können, gehören dazu eckige Klammern, Punkte usw. Wenn Sie ein Hilfszeichen als normales Zeichen eingeben möchten, setzen Sie einen Backslash () davor. Beispiel: [t-v]x+ steht für Wörter wie „tx“, „txx“, „txxx“ usw., „ux“, „uxx“ usw., aber [t-v]x+ steht für Wörter wie „[t-v]x“, „[t-v]xx“, „[t-v]xxx“ usw.
  • Wenn Sie bestimmte Elemente eines regulären Ausdrucks gruppieren müssen, verwenden Sie Klammern. Zum Beispiel steht (a|b)+|c für „c“ und beliebige Kombinationen wie „abbbaaabbb“, „ababab“ usw. (ein Wort beliebiger Länge größer null, in dem beliebig viele a und b in beliebiger Reihenfolge vorkommen können), während a|b+|c für „a“, „c“ und „b“, „bb“, „bbb“ usw. steht.

Beispiele für reguläre Ausdrücke

Regulärer Ausdruck für Datumsangaben Die Zahl für den Tag kann aus einer Ziffer (z. B. 1, 2 usw.) oder aus zwei Ziffern (z. B. 02, 12) bestehen, sie darf jedoch nicht null sein (00 oder 0). Der reguläre Ausdruck für den Tag sieht dann so aus: ((|0)[1-9])|([12][0-9])|(30)|(31). Der reguläre Ausdruck für den Monat sieht wie folgt aus: ((|0)[1-9])|(10)|(11)|(12). Der reguläre Ausdruck für das Jahr sieht wie folgt aus: (((19)|(20))[0-9][0-9])|([0-9][0-9]). Nun bleibt nur noch, dies alles zusammenzuführen und die Zahlen durch einen Punkt zu trennen (z. B. 1.03.1999). Der Punkt ist ein Hilfszeichen, daher müssen wir ihm einen Backslash () voranstellen. Der reguläre Ausdruck für das vollständige Datum sieht dann so aus: (((|0)[1-9])|([12][0-9])|(30)|(31)).(((|0)[1-9])|(10)|(11)|(12)).((((19)|(20))[0-9][0-9])|([0-9][0-9])) Regulärer Ausdruck für E-Mail-Adressen Sie können ganz einfach ein Muster zum Erfassen von E-Mail-Adressen erstellen. Der reguläre Ausdruck für eine E-Mail-Adresse kann wie folgt aussehen: [a-zA-Z0-9_-.]+@[a-zA-Z0-9.-]+.[a-zA-Z]+

Für die Datenerfassung

Wenn Sie bei der Erkennung auf Feldebene reguläre Ausdrücke verwenden, müssen in der Regel nur die Wörter erkannt werden, die genau dem regulären Ausdruck entsprechen. In diesem Fall empfehlen wir, eine separate Sprache für die Felderkennung zu erstellen und dafür die folgenden Eigenschaften festzulegen:
  1. Als Erkennungsergebnisse dürfen nur Wörter aus dem Wörterbuch zugelassen werden: Setzen Sie die Eigenschaft IBaseLanguage::AllowWordsFromDictionaryOnly auf TRUE. Dies ist für die exakte Übereinstimmung erforderlich.
  2. Die Zeichenmenge der Erkennungssprache darf nur die Zeichen enthalten, die im regulären Ausdruck vorkommen: Geben Sie die Eigenschaft IBaseLanguage::LetterSet an. Dies ist erforderlich, da Zeichen aus dem Sprachalphabet auch dann erkannt werden können, wenn sie nicht dem regulären Ausdruck entsprechen.
  3. Setzen Sie die Eigenschaft IBaseLanguage::IsNaturalLanguage auf FALSE.

Windows-Beispiele

// Globales ABBYY FineReader Engine-Objekt
FREngine.IEngine engine;
// Ein LanguageDatabase-Objekt
FREngine.ILanguageDatabase languageDatabase = engine.CreateLanguageDatabase();
// Ein TextLanguage-Objekt erstellen
FREngine.ITextLanguage textLang = languageDatabase.CreateTextLanguage();
// Ein BaseLanguage-Objekt erstellen und die Einstellungen angeben
FREngine.IBaseLanguage baseLang = textLang.BaseLanguages.AddNew();
baseLang.set_LetterSet(FREngine.BaseLanguageLetterSetEnum.BLLS_Alphabet, "$0123456789,.");
baseLang.IsNaturalLanguage = false;
baseLang.AllowWordsFromDictionaryOnly = true;
// Ein neues auf regulären Ausdrücken basierendes Wörterbuch erstellen und der Sprache zuweisen
FREngine.IDictionaryDescription dictDescr = baseLang.DictionaryDescriptions.AddNew(FREngine.DictionaryTypeEnum.DT_RegularExpression);
// Den regulären Ausdruck festlegen
dictDescr.GetAsRegExpDictionaryDescription().SetText(@"[$0-9,.]+");

Siehe auch

Arbeiten mit Wörterbüchern RegExpDictionaryDescription