Passende HTML-Absätze mit mindestens einem Wort in Großbuchstaben

Passende HTML-Absätze mit mindestens einem Wort in Großbuchstaben

Mithilfe von regulären Ausdrücken oder etwas anderem muss ich jeden Absatz abgleichen, der mindestens ein Wort in Großbuchstaben enthält.

Dann verwandeln Sie es in eine Überschrift und schreiben Sie den gesamten Inhalt des Titels in Großbuchstaben. Im folgenden Beispiel wird das WortHiersollte geändert werden inHIER. Dies gilt auch für Buchstaben mit Akzent.

Wie kann ich das machen?

<P STYLE="margin-bottom: 0cm"><BR>
    </P>
</DIV>
<P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0cm; line-height: 0.42cm">
<FONT SIZE=4><B>TITLE Here</B></FONT></P>

Ich verwende Linux.

Antwort1

Sie können dies mit ziemlicher Sicherheit mithilfe von Konsolenbefehlen tun, aber das klingt eher nach einer einmaligen Reparatur als nach einer regelmäßigen Aufgabe, daher würde ich mein bevorzugtes grafisches Regex-Tool verwenden, den sehr praktischen Open-Source-Texteditor für Programmierer namens jEdit. (Siehewww.jedit.orgfür Details.)

Nachdem Sie jEdit installiert haben, können Sie das Dialogfeld „Suchen und Ersetzen“ öffnen, indem Sie Strg+F drücken oder zum Menü „Suchen“ gehen und das Element „Suchen“ auswählen.

Im Dialogfenster „Suchen und Ersetzen“ müssen Sie die gewünschte Option „Suchen in“ auswählen. „Aktueller Puffer“ ändert nur die aktuelle Datei, „Alle Puffer“ ändert alle aktuell in jEdit geöffneten Dateien und die Option „Verzeichnis“ ermöglicht Ihnen, alle Dateien im Verzeichnis (das Sie unten im Dialogfenster angeben) zu ändern, die dem von Ihnen angegebenen Filter (wie *.htmloder *.php) entsprechen. Die Option „Verzeichnis“ ist sehr leistungsfähig und möglicherweise die Option, die Sie benötigen. Gehen Sie jedoch sehr vorsichtig damit um und prüfen Sie sorgfältig, dass Ihre Suche/Ersetzung keine unerwarteten Änderungen durch Übereinstimmungen verursacht, die Sie nicht berücksichtigt haben.

Als nächstes müssen Sie in der Mitte des Dialogs das Kontrollkästchen „Reguläre Ausdrücke“ aktivieren.

Geben Sie nun in das Textfeld „Suchen nach“ den regulären Ausdruck ein, mit dem Sie den zu ändernden Text finden möchten. Wenn ich Ihre Anforderung richtig verstehe, könnte dieses reguläre Ausdrucksmuster funktionieren:

(?<=>)([^<]*\p{Lu}{2,}[^<]*)(?=<)(?!</script)

Dieses Muster besagt: „Wählen Sie Text aus, dem ein vorangestellt ist >und der eine beliebige Anzahl von Zeichen enthält, die nicht sind, <dann mindestens zwei aufeinanderfolgende Großbuchstaben, dann eine beliebige Anzahl von Zeichen, die nicht sind , und auf den schließlich ein, aber NICHT " <folgt .<</script

Anschließend müssen Sie die Option „Rückgabewert eines BeanShell-Snippets“ auswählen und in das Textfeld „Ersetzen durch“ Folgendes eingeben:

_1.toUpperCase()

Dieser BeanShell-Ausschnitt besagt lediglich „der in der ersten Erfassungsgruppe erfasste Text, der mit dem regulären Ausdruck übereinstimmt, in Großbuchstaben umgewandelt“.

Ich habe dies getestet und es funktioniert problemlos in einer HTML-Datei und findet aufeinanderfolgende Sequenzen von Rohtext, die zwei oder mehr aufeinanderfolgende Großbuchstaben enthalten. Beachten Sie, dass jeder Absatz, der etwas Unschuldiges wie „UK“ oder „USB“ enthält, ebenfalls von diesem regulären Ausdruck gefunden wird. Sie sollten daher den {2,}Quantifizierer {4,}so ändern, dass mindestens vier aufeinanderfolgende Großbuchstaben vorhanden sein müssen, damit eine Sequenz gefunden wird.

Testen Sie die Funktion außerdem sehr sorgfältig, bevor Sie sie auf eine wertvolle Datei oder einen Satz von Dateien anwenden (und stellen Sie sicher, dass Sie zuerst eine Sicherungskopie aller Originale erstellt haben, damit Sie sie wiederherstellen können, wenn etwas schief geht und Sie es erst bemerken, nachdem Sie die Änderungen gespeichert haben).

verwandte Informationen