The reason that doesn't work has nothing to do with multiline strings. ( and ) are special characters in regex patterns, which are used to denote capture groups, that's why your search fails.
If you need to search for a pattern with literal ( or ) you can always escape them with backslashes \ (I also used a raw-string literal here, as is preferable with regex patterns):
import re
t = ''' #ven=W_insert()
#ven.play()
xxxxxxxf
zacku'''
x = r''' #ven=W_insert\(\)
#ven.play\(\)
xxxxxxxf
zacku'''
print(re.search(x, t))
Output:
<_sre.SRE_Match object; span=(0, 56), match=' #ven=W_insert()\n #ven.play()\n xxxxxxxf\>
You can also use re.escape to do the escaping automatically:
import re
t = ''' #ven=W_insert()
#ven.play()
xxxxxxxf
zacku'''
x = ''' #ven=W_insert()
#ven.play()
xxxxxxxf
zacku'''
print(re.search(re.escape(x), t))
Output:
<_sre.SRE_Match object; span=(0, 56), match=' #ven=W_insert()\n #ven.play()\n xxxxxxxf\>