diff --git a/src/detectmatelibrary/utils/log_format_utils.py b/src/detectmatelibrary/utils/log_format_utils.py index 5f7c04e..a56478f 100644 --- a/src/detectmatelibrary/utils/log_format_utils.py +++ b/src/detectmatelibrary/utils/log_format_utils.py @@ -46,7 +46,9 @@ def generate_logformat_regex(log_format: str) -> Tuple[list[str], re.Pattern[str regex_str = '' for k in range(len(splitters)): if k % 2 == 0: - splitter = re.sub(r' +', r'\\s+', splitters[k]) + # Split on runs of spaces, escape each part, then rejoin with \s+ + parts = re.split(r' +', splitters[k]) + splitter = r'\s+'.join(re.escape(p) for p in parts) regex_str += splitter else: header = splitters[k].strip('<').strip('>') diff --git a/tests/test_utils/test_log_format_utils.py b/tests/test_utils/test_log_format_utils.py index b79d6b8..c6c1044 100644 --- a/tests/test_utils/test_log_format_utils.py +++ b/tests/test_utils/test_log_format_utils.py @@ -1,9 +1,64 @@ from datetime import datetime, timezone +from detectmatelibrary.utils.log_format_utils import generate_logformat_regex from detectmatelibrary.utils.time_format_handler import TimeFormatHandler tfh = TimeFormatHandler() + +class TestGenerateLogformatRegex: + def test_simple_format(self): + headers, regex = generate_logformat_regex("