Skip to content

Commit 0dd02c2

Browse files
authored
Add greedy wildcard replacement to replacer (#799)
1 parent e833d1a commit 0dd02c2

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

logprep/processor/replacer/processor.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,10 @@ def _handle_wildcard(replacement: Replacement, to_replace: str) -> Replacement |
110110
Other patterns require no escaping of `*`.
111111
"""
112112
if replacement.keep_original:
113-
match_idx = to_replace.find(replacement.next)
113+
if replacement.greedy:
114+
match_idx = to_replace.rfind(replacement.next)
115+
else:
116+
match_idx = to_replace.find(replacement.next)
114117
if match_idx < 0:
115118
return None
116119
original = to_replace[:match_idx] if match_idx else to_replace

tests/unit/processor/replacer/test_replacer.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,17 @@
283283
{"field": "Disconnected from 1.2.3.4. Connected to 1.2.3.4."},
284284
{"field": "Disconnected from IP. Connected to IP."},
285285
),
286+
(
287+
"replace wildcard greedily",
288+
{
289+
"filter": "field",
290+
"replacer": {
291+
"mapping": {"field": "Disconnected from %{IP|g}. Connected to %{*|g}."},
292+
},
293+
},
294+
{"field": "Disconnected from 1.2.3.4. Connected to 1.2.3.4."},
295+
{"field": "Disconnected from IP. Connected to 1.2.3.4."},
296+
),
286297
(
287298
"replace multiple fields",
288299
{

0 commit comments

Comments
 (0)