Ich habe Hunderte von Textdateien, die chemische Formeln zusammen mit Erzählungen einschließlich numerischer Werte enthalten. Vor den Formeln stehen immer Leerzeichen, gefolgt von Leerzeichen, Kommas, Punkten usw.
Das Problem ist: Die Formeln sind nicht so formatiert, dass Zahlen als Indizes angezeigt werden, z.
H 2 SO 4, C 5 H 11 OH.
Ich möchte die Indizes als HTML-Tags formatieren, z.
H<sub>2</sub>SO<sub>4</sub>, C<sub>5</sub>H<sub>11</sub>OH
Damit Indizes in HTML gerendert werden, z.
H 2 SO 4 , C 5 H 11 OH
Ich habe damit gespielt, dies mit Java, PHP usw. zu erreichen, aber die Implementierungen sind notwendigerweise chaotisch und umständlich. Ich vermute, dass es einen eleganten Sed / Awk-Ansatz gibt.
Ein Teil der Lösung besteht eindeutig darin, einen regulären Ausdruck zu erstellen, der mit einem Buchstaben gefolgt von einer oder mehreren Ziffern als Formelerkennungsmechanismus übereinstimmt (es kann falsch positive Ergebnisse geben, die ich später manuell korrigieren werde). Bei einer so identifizierten Formel muss ein sed-Ersatz vor jeder Ziffer oder Ziffernfolge mit dem sub
Tag versehen und anschließend mit einem Sub-Tag-Abschluss versehen werden.
Es muss einen Einzeiler geben, der das macht, aber ich bin über meinem Kopf.
Irgendwelche Ideen?