Custom rules und Leerzeichen

Ich experimentiere gerade mit dem Anlegen eigener Regeln.
Nachdem ich jetzt verschiedene Möglichkeiten versucht habe (ohne Erfolg), hoffe ich jetzt, dass ich hier Hilfe finde. Vermutlich ist es nur eine Kleinigkeit.

Folgende Regel benötige ich:
Wir behandeln Urteilstexte, welche meistens mit einer sogenannten Randnummer beginnen. Da die Texte im HTML-Format vorliegen gibt es vielleicht, auch andere Möglichkeiten (data statt text). Das würde ich aber nur im Notfall nutzen wollen!
Heißt im LT kommt gerade als text “12 Das ist eine Randnummer.” an. (2 Leerzeichen zwischen Zahl und Text. Problem LT meckert in der Normaleinstellung zum Einen über die zu vielen Leerzeichen und - viel schlimmer - über das großgeschriebene “Das”, da es nicht der Satzanfang ist.
Die Regel soll also alles anmeckern, was eine Zahl und einen Großbuchstaben (bei nicht Substantiven) enthält und ungleich 3 Leerzeichen zwischen Zahl und Großbuchstaben enthält.

<?xml version="1.0" encoding="UTF-8"?>
<rules lang="de" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.xsd">
  <category id="CASING" name="Groß-/Kleinschreibung">
    <rule id="RANDNUMMER" name="Randnummern und Satzanfang">
<!--
      <antipattern>
        <token regexp="yes">[0..9]*</token>
        <token regexp="yes" case_sensitive="yes" spacebefore="yes">\s{3}[A-ZÄÖÜ].*</token>
      </antipattern>
-->
      <pattern>
        <token regexp="yes">[0..9]*</token>
        <token> </token>
        <token regexp="yes" case_sensitive="yes">[A-ZÄÖÜ].*</token>
      </pattern>
<!--
      <regexp>[0..9]\s*[A-ZÄÖÜ]</regexp>
-->
      <example>5   Dies ist eine Randnummer.</example>
      <example>Es gibt 5 <marker>Mal</marker> so viele Randnummer.</example>
    </rule>
  </category>
</rules>

Das ist meine Idee. Ich habe mal ein paar Experimente drin gelassen.

Meine Erwartung bei der Rule war, dass er nur Texte anmeckert, die genau EIN Leerzeichen enthält. Ich habe mit spacebefore - ohne Erfolg - experimentiert.
Mit regexp in Tokens die “\s” enthält. Kein Erfolg.

Ich hoffe irgendjemand kann mit einen Schubs in die richtige Richtung geben.

Schon mal Danke
rvpc

PS: Ich habe sogar eine eigene Rule programmiert. Die funktioniert laut Test hervorragend. Da weiß ich nur nicht, wie ich die in den HTTPServer hinzufügen kann!

Mit <pattern> funktioniert das nicht, dort kann man keine bestimmte Anzahl an Leerzeichen abfragen.

Dazu muss man eine Instanz der Klasse in German.java in der Methode getRelevantRules() zurückgeben.

1 Like

Kurze Gegenfrage. Wäre die programmierte Regel beim HTTPServer-API-Call mit dem enabledRules-Parameter aktivierbar ohne das sie in der getRelevantRules()-Methode enthalten ist?

Nein, wenn sie nicht in getRelevantRules() oder ähnlich steht, dürfte LT sie komplett ignorieren.

1 Like