Punkte durch Komma ersetzen mit Regex in einem HTML-Dokument

FatManStanding

Lt. Junior Grade
Registriert
Aug. 2021
Beiträge
385
tach,

ich hab ehier ein sehr umfangreiches html-dokument (eigentlich epub, ist aber die gleiche syntax). das ganze wurde durch eine ocr-software erstellt, die teilweise probleme hatte punkte von kommas zu unterscheiden. ich habe jetzt eine ganze reihe von html-tags mit listen von namen die eigentlich durch komma getrennt sein sollen, teilweise steht da aber ein punkt. da ganze lässt sich durch den tag im text eindeutig identifizieren:

<p class="class_name">name1 nachname1, name2 nachname2. name3 nachname3 - name4 nachname4. name5 nachname5</p>

hier müsste der punkt nach "nachname2" und der nach "nachname4" durch komma ersetzt werden. der bindestrich soll bleiben. ich finde aber keinen reg. ausdruck, der das so erkennt. sowas wie

<p class="class_name">([A-Za-z]{1,})

hört beim ersten leerzeichen auf. was ich suche ist irgendetwas wie

SUCHE: <p class="class_name">REGEX\.
ERSETZE: <p class="class_name">\1,

wobei 'REGEX' für etwas steht wie "alle groß- und kleinbuchstaben plus leerzeichen plus bindestrich". laut hier https://de.wikipedia.org/wiki/Regulärer_Ausdruck#Vordefinierte_Zeichenklassen sollte [:blank:] oder [:space:] gehen, da findet der editor aber irgendwelche kleinbuchstaben. die logik verstehe ich nicht.

als editor nutze ich calibre (unter sigil geht das auch nicht, der hinweis wird ganz sicher kommen :freak:).
 
Hancock schrieb:
Abgesehen von Regex+HTML
Die Antwort ist mega gut und ein klassiker, aber bezieht sich erstmal auf HTML in ihrer Gesamtheit. Siehe auch zweite Antwort in deinem Linkk.
 
@ Hancock

so geht es. kannst du erklären was das macht? das überfordert mich gerade dezent.
 
Ich suche alle Worte, die auf ein . enden und nach einem <p > kommen, und ersetze die. Wichtig ist, dass man natürlich die "Luft" dazwischen matched, ohne dass es zu allgemein wird, also darf die "Luft" kein < enthalten. Andernfalls ersetzt es alle . nach einem Wort durch ein , .
\w matched ein Wort-Buchstabe, \. matched ein ., [^ ] matched alles außer das was dann noch drin steht, * heist 0..Inf viele von d vorher, + 1..Inf viele von dem vorher.
 
Zurück
Oben