diff --git a/pyomd/metadata.py b/pyomd/metadata.py index 6e86a86..2e1804b 100644 --- a/pyomd/metadata.py +++ b/pyomd/metadata.py @@ -421,11 +421,15 @@ class InlineMetadata(Metadata): metadata dictionary """ + KEY_PART_REGEX = r"([0-9\p{Letter}\w\s_/-]+)" + MARKUP_CHARS_REGEX = r'[_*~`]*' + FULL_LINE_KEY_REGEX = r"[^0-9\w\p{Letter}]*" + KEY_PART_REGEX + MARKUP_CHARS_REGEX + TMP_REGEX = Template(r"(?P.*?)(?P$key)::(?P.*)") TMP_REGEX_ENCLOSED = Template( r"(?P.*?)(?P[(\[])(?P$key)::(?P.*?)(?P[)\]])(?P.*)" ) - REGEX = re.compile(TMP_REGEX.substitute(key="[A-z][A-z0-9_ -]*")) + REGEX = re.compile(TMP_REGEX.substitute(key=FULL_LINE_KEY_REGEX)) REGEX_ENCLOSED = re.compile(TMP_REGEX_ENCLOSED.substitute(key=".*?")) def to_string( @@ -513,7 +517,7 @@ def _parse_1(cls, note_content: str) -> MetaDict: tmp: dict[str, list[str]] = dict() for m in matches: - k = m.group("key").strip() + k = re.sub(cls.MARKUP_CHARS_REGEX, '', m.group("key")).strip() # Remove markup characters and strip whitespace v = m.group("values") tmp[k] = tmp.get(k, "") + ", " + v metadata: MetaDict = {