diff --git a/reacnetgenerator/_reachtml.py b/reacnetgenerator/_reachtml.py
index c9a9cce39..da02df37b 100644
--- a/reacnetgenerator/_reachtml.py
+++ b/reacnetgenerator/_reachtml.py
@@ -47,10 +47,20 @@ def report(self):
f"Report is generated. Please see {self.resultfilename} for more details.")
def _re(self, smi):
- for an in self.atomname:
- if an != 'H':
- smi = smi.replace(an.upper(), f"[{an.upper()}]").replace(
- an.lower(), f"[{an.lower()}]")
+ """If you use RDkit to convert a methyl radical to SMILES, you will get something
+ like [H]C([H])[H]. However, OpenBabel will consider it as a methane molecule. So,
+ you have to use [H][C]([H])[H], if you need to process some radicals.
+
+ Examples:
+ >>> self._re('C')
+ [C]
+ >>> self._re('[C]')
+ [C]
+ >>> self._re('[CH]')
+ [CH]
+ """
+ elements = "".join([an.upper() + an.lower() for an in self.atomname if an != 'H'])
+ smi = re.sub(r'(?