From 0f84b9b01ad627c4c7c12eedd4520906bc746570 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Mar 2026 10:52:04 +0000 Subject: [PATCH 1/2] Initial plan From 5f00b31e02211516f81195205fbd53f2b90b9801 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Mar 2026 11:18:16 +0000 Subject: [PATCH 2/2] Fix generate_logformat_regex to escape special regex characters in literal parts Co-authored-by: viktorbeck98 <95294548+viktorbeck98@users.noreply.github.com> --- .../utils/log_format_utils.py | 4 +- tests/test_utils/test_log_format_utils.py | 55 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) 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("