^\s*[)]*\s*$ #### ^\s*[(]*\s*$ #### while ( #matches here ( #matches here (condition1) && (condition2) && condition3 ) || (#matches here (condition4) || condition5 && (condition6) ) #matches here ) #matches here #### while (( #does not match here (condition1) && (condition2) && condition3 ) || ( (condition4) || condition5 && (condition6) ) ) #does not match here #### while ((( #does not match here (condition1) && (condition2) && condition3 )) || (( #does not match here (condition4) || condition5 && (condition6) ) ) ) #does not match here