aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/eu
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/eu')
-rw-r--r--src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java12
-rw-r--r--src/main/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParser.java5
2 files changed, 15 insertions, 2 deletions
diff --git a/src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java b/src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java
index d79df60..9c1edaa 100644
--- a/src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java
+++ b/src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java
@@ -123,6 +123,14 @@ public final class TextBereiniger {
Pattern.compile(
"^\\s*https?://\\S+\\s+Fassung vom \\d{1,2}\\.\\d{1,2}\\.\\d{4}\\s+Seite \\d+ von \\d+\\s*$");
+ // Niedersächsisches GVBl: laufende Fußzeile („Nds. GVBl. 2026 Nr. 10 vom 4. Februar 2026 Seite 2“)
+ // und Herausgeberzeile. Die Fußzeile steht zwischen zwei Aufzählungsgliedern und hängte sich sonst
+ // an den vorangehenden Befehl (Neufassungs-Zitat), sodass dessen Satzende-Anker nicht mehr greift.
+ private static final Pattern NDS_GVBL_FUSS =
+ Pattern.compile("^\\s*Nds\\. GVBl\\. \\d{4} Nr\\. \\d+ vom .+? Seite \\d+\\s*$");
+ private static final Pattern NDS_HERAUSGEBER =
+ Pattern.compile("^\\s*Herausgeber: Niedersächsische Staatskanzlei\\s*$");
+
/** Konjunktionen, die typischerweise auf einen Suspensivstrich folgen („Wirk- und …“). */
private static final Pattern KONJUNKTION =
Pattern.compile("^(und|oder|sowie|bzw\\.|beziehungsweise)\\b.*");
@@ -292,7 +300,9 @@ public final class TextBereiniger {
|| LANDTAG_SEITENKOPF.matcher(zeile).matches()
|| LANDTAG_TITELKOPF.matcher(zeile).matches()
|| LANDTAG_MARKE.matcher(zeile).matches()
- || REVOSAX_FUSS.matcher(zeile).matches();
+ || REVOSAX_FUSS.matcher(zeile).matches()
+ || NDS_GVBL_FUSS.matcher(zeile).matches()
+ || NDS_HERAUSGEBER.matcher(zeile).matches();
}
/**
diff --git a/src/main/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParser.java b/src/main/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParser.java
index 23260de..ada273c 100644
--- a/src/main/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParser.java
+++ b/src/main/java/eu/mulk/aendggner/gesetz/land/LandesRechtTextParser.java
@@ -69,7 +69,10 @@ final class LandesRechtTextParser {
// dass „Satz“ auch „Satzungen“, „Nummer“ auch „Nummerierung“ trifft.
+ "(?!(?:Absatz|Abs\\.|Satz|Sätze|Nummer|Nr\\.|Buchstabe|Buchst\\."
+ "|und|bis|oder|sowie|des|der|dieses)(?![a-zäöüß]))"
- + "((?:\\p{Lu}|\\().*)$");
+ // Der Titel endet nicht auf einen Punkt: ein Normkopf trägt eine Überschrift, keinen
+ // ganzen Satz. So wird ein am Zeilenanfang stehender Querverweis-Satz („§ 7 GAPInVeKoSG
+ // findet entsprechend Anwendung.“) nicht fälschlich als Normkopf „§ 7“ gelesen.
+ + "((?:\\p{Lu}|\\().*[^.])\\s*$");
private static final Pattern WEGGEFALLEN_TITEL =
Pattern.compile("^\\((?:aufgehoben|weggefallen)\\)$");