import re
regex = re.compile(r"(?|([a-zA-Z0-9]+)[({[«]([a-zA-Z\s]+)[)}\]»]|[({[«]([a-zA-Z\s]+)[)}\]»]([a-zA-Z0-9]+))")
test_str = ("// i want to mark for single brackets examples below other heighlight pattren not disturb.please\n"
"(weather // i want to mark this word\n"
"weather) // i want to mark this word\n"
"(weather is good // i want to mark this word\n"
"weather is good) // i want to mark this word\n"
"weathe)r\n"
"wea(ther\n"
"and same for other brackets {,[,«\n"
"{weather // i want to mark this word\n"
"weather} // i want to mark this word\n"
"{weather is good // i want to mark this word\n"
"weather is good} // i want to mark this word\n"
"weathe}r // i want to mark this word\n"
"weathe{r // i want to mark this word\n\n"
"[weather // i want to mark this word\n"
"weather] // i want to mark this word\n"
"[weather is good // i want to mark this word\n"
"weather is good] // i want to mark this word\n"
"weathe]r // i want to mark this word\n"
"weathe[r // i want to mark this word\n"
"«weather // i want to mark this word\n"
"weather} // i want to mark this word\n"
"«weather is good // i want to mark this word\n"
"weather is good» // i want to mark this word\n"
"weathe»r // i want to mark this word\n"
"weathe»r // i want to mark this word\n\n"
"(Weather) is good. // not need to mark this beacuase this word correct word\n"
"Weath(er) is good. // mark\n"
"Weath(er is good). // mark\n"
"Weather (is) (good).\n"
"My name is Rah(eel) // mark\n"
"Best pro(duct) // mark\n"
"(Weather is good) // not need to mark this beacuase this word konown word\n"
"we(ather)\n"
"(weath)er is good. // mark\n"
"(weath)er // mark\n"
"weather(is fine)\n"
"weather is good\n"
"{weather is good} //not need to mark correct\n"
"weat{er is good} // mark\n"
"we{ather} is fine // mark\n\n"
"{weathe}r is fine // i want to mark this word\n"
"{weather is fin}e // i want to mark this word\n\n"
"[weather is good] //not need to mark correct\n"
"weat[her is good] // mark\n"
"we[ather] is fine // mark\n\n"
"[weathe]r is fine // mark\n"
"[weather is f]ine // mark\n\n"
"we[ather] is fine // mark\n\n"
"«weather is good» //not need to mark\n"
"weat«her is good» // mark\n\n"
"we«ather» is fine // mark\n\n"
"«weat»her is fine // mark\n"
"«weather is fi»ne // mark\n\n\n\n\n\n\n\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