import re
regex = re.compile(r"^((?!V2).)*(- Dev|- Test)\s*$", flags=re.MULTILINE)
test_str = ("AppMessages - Dev\n"
"AppMessages - Master\n"
"AppMessages2 - Dev\n"
"AppMessages2 - Master\n"
"AWS - Octopus Release\n"
"BellHop - Dev\n"
"BellHop - Master\n"
"Bellhop Model - Dev\n"
"Bellhop Model - Master\n"
"Bellhop Model V2 - Dev\n"
"Bellhop Model V2 - Master\n"
"BellHop Services - Dev\n"
"BellHop Services - Master\n"
"BSG Log4j Extras - Dev\n"
"BSG Log4j Extras - Master\n"
"BSG Log4j Extras V2- Dev\n"
"BSG Log4j Extras V2- Master\n"
"BSG-BOM - Dev\n"
"BSG-BOM - Master\n"
"BSG-BOM2 - Dev\n"
"BSG-BOM2 - Master\n"
"Core Model - Dev\n"
"Core Model - Master\n"
"Core Model V2 - Master\n"
"Core Model V2 - Dev\n"
"Core Services - Dev\n"
"Core Services - Master\n"
"Core Services V2 - Dev\n"
"Core Services V2 - Master\n"
"DealerLocator - Dev\n"
"EMS Services - Dev\n"
"EMS Services - Master\n"
"EMS Services V2 - Dev\n"
"EMS Services V2 - Master\n"
"Entitlements Services - Dev\n"
"Entitlements Services - Master\n"
"Entitlements SOAP API - Dev\n"
"Laipac Service - Master\n"
"Laipac Services - Dev\n"
"Laipac Services V2 - Dev\n"
"Laipac Services V2 - Master\n"
"LDK Services - Dev\n"
"LDK Services - Master\n"
"LDK Services V2 - Dev\n"
"LDK Services V2 - Master\n"
"LicenseAdmin - Dev\n"
"LicenseAdmin - Master\n"
"LiteFlexNetIntegration - Dev\n"
"LiteFlexNetIntegration - Master\n"
"LiteIntegration - Dev\n"
"LiteIntegration - Master\n"
"LiteLib - Dev\n"
"LiteLib - Master\n"
"Logviewer - Dev\n"
"Logviewer - Master\n"
"Messaging Services - Dev\n"
"Messaging Services - Master\n"
"OptionKeys - Dev\n"
"OptionKeys - Master\n"
"OptionKeysAPI - Dev\n"
"OptionKeysAPI - Master\n"
"Pools API - Dev\n"
"Pools API - Master\n"
"Pools Model - Dev\n"
"Pools Model - Master\n"
"Pools Model V2 - Dev\n"
"Pools Model V2 - Master\n"
"Pools Services - Dev\n"
"Pools Services - Master\n"
"Pools Services V2 - Dev\n"
"Pools Services V2 - Master\n"
"SubscriptionManager - Dev\n"
"SubscriptionManager - Master\n"
"SubscriptionManager2 - Dev\n"
"SubscriptionManager2 - Master\n"
"Tid Services - Dev\n"
"Tid Services - Master\n"
"TidHTTP - Dev\n"
"TidHTTP - Master\n"
"Upload templates to S3 - branch2Dev\n"
"Upload templates to S3 - Dev\n"
"Upload templates to S3 - Master\n"
"Upload templates to S3 - Test\n"
"VirtualWarehouse - Dev\n"
"VirtualWarehouse - Master\n"
"VirtualWarehouse Services - Dev\n"
"VirtualWarehouse Services - Master\n"
"VirtualWarehouse Services V2 - Dev\n"
"VirtualWarehouse Services V2 - Master\n"
"VW Axiom - Dev\n"
"VW Axiom - Master\n"
"VW Lite API - Dev\n"
"VW Lite API - Master\n"
"VW Remedy Events - Dev\n"
"VW Remedy Events - Master\n"
"VW Remedy Events Consumer - Dev\n"
"VW Remedy Events Consumer - Master\n"
"VW Remedy Events Lib - Dev\n"
"VW Remedy Events Lib - Master\n"
"VW Scheduled Tasks - Dev\n"
"VW Scheduled Tasks - Master\n"
"VW Sentinel - Dev\n"
"VW Sentinel - Master\n"
"VW Subscriptions - Dev\n"
"VW Subscriptions - Master\n"
"VW5 - Dev\n"
"VW5 - Master\n"
"WooCommerce API - Dev\n"
"WooCommerce API - Master\n"
"WooCommerce Model - Dev\n"
"WooCommerce Model - Master\n"
"WooCommerce Model V2 - Dev\n"
"WooCommerce Model V2 - Master\n"
"WooCommerce Services - Dev\n"
"WooCommerce Services - Master\n"
"WooCommerce Services V2 - Dev\n")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html