diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/events/subscription/AlertsRuleEvaluator.java b/openmetadata-service/src/main/java/org/openmetadata/service/events/subscription/AlertsRuleEvaluator.java index c2a58b3a937..882d661064a 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/events/subscription/AlertsRuleEvaluator.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/events/subscription/AlertsRuleEvaluator.java @@ -255,7 +255,13 @@ public class AlertsRuleEvaluator { EntityInterface entity = getEntity(changeEvent); for (String name : tableNameList) { - Pattern pattern = Pattern.compile(name); + // Escape regex special characters in table name for exact matching + String escapedName = Pattern.quote(name); + + // Construct regex to match table name exactly, allowing for end of string or delimiter (.) + String regex = "\\b" + escapedName + "(\\b|\\.|$)"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(entity.getFullyQualifiedName()); if (matcher.find()) { return true;