I am trying to remove a string that is in parentheses from a list in Python without success.
See following code:
full = ['webb', 'ellis', '(sportswear)']
regex = re.compile(r'\b\(.*\)\b')
filtered = [i for i in full if not regex.search(i)]
['webb', 'ellis', '(sportswear)']
\b word boundary makes it impossible to match
( at the beginning of a string since there is no word there (i.e.
\b requires a letter, digit or underscore to be right before
( in your pattern, and that is not the case).
As you confirm you need to match values that are fully enclosed with
(...), you need
regex = re.compile(r'\(.*\)$') with
import re full = ['webb', 'ellis', '(sportswear)'] regex = re.compile(r'\(.*\)$') filtered = [i for i in full if not regex.match(i)] print(filtered)
See the IDEONE demo
re.match will anchor the match at the start of the string, and the
$ will anchor the match at the end of the string.
Note that if your string has newlines in it, use
flags=re.DOTALL when compiling the regex (so that
. could also match newline symbols, too).