python - Check if substring is in string -
let's have list
test = ["a","bb","ph","phi","phi_ph"] where member of test can either contain string ph, string phi, combination of these two, or none of them. how can filter list retain elements containing ph such that:
test_filtered = ["ph","phi_ph"] when e.g.
[x x in test if 'ph' in x] returns
>> ["ph","phi","phi_ph"]
the solution using re.compile() , re.search() functions:
import re test = ["a","bb","ph","phi","phi_ph", "phi_abc", "ph_a"] search_str = 'ph' pattern = re.compile(r'(^|[^a-z0-9])'+ search_str + '([^a-z0-9]|$)') result = [i in test if re.search(pattern, i)] print(result) the output:
['ph', 'phi_ph', 'ph_a'] (^|[^a-z0-9]) - alternation group, ensures search string(i.e. ph) should occur @ start of string or preceded non-alphanumeric character
([^a-z0-9]|$) - alternation group, ensures search string(i.e. ph) should occur @ end of string or followed non-alphanumeric character
Comments
Post a Comment