Source code for chemparseplot.parse.patterns
# SPDX-FileCopyrightText: 2023-present Rohit Goswami <rog32@hi.is>
#
# SPDX-License-Identifier: MIT
# https://regex101.com/r/jHAG2T/1
# DIGIT pattern for a floating-point number, possibly negative
DIGIT = r"-?\d+\.\d+"
[docs]
def create_multicol_pattern(num_cols, pname="multicolnum"):
if num_cols < 1:
error_message = "Number of columns must be at least 1"
raise ValueError(error_message)
# Building the pattern for N columns
pattern = (
r"\s*" # Optional leading whitespace
rf"(?P<{pname}>" # Named group
r"(?:"
)
# Add DIGIT pattern for each column, with whitespace
for _ in range(num_cols):
pattern += r"\s*" # Optional whitespace before each number
pattern += DIGIT
pattern += r")+" # Repeat for multiple lines
pattern += r")" # End of named group
return pattern
TWO_COL_NUM = create_multicol_pattern(2, "twocolnum")
THREE_COL_NUM = create_multicol_pattern(3, "threecolnum")