Re.match() returns always none
I feel kind of stupid but it does not work:
import re
a = " ebrj wjrbw erjwek wekjb rjERJK ABB RAEJKE BWE RWEJBEWJ B KREWBJ BWERBJ32J3B23B J BJ235JK BJJ523 2"
print re.match(ur'/(wekjb|ABB)/',a)
if re.match(ur'/(wekjb|ABB)/',a):
print 'success'
I have the ur'
if the user given a
is unicode. I want to print success if wekjb
or ABB
is in the string but I always get None
as the result of the match
.
Solution 1:
re.match
is implicitly anchored to the start of the string. If you want to search a string for a substring that can be anywhere within it, then you need to use re.search
:
import re
a = " ebrj wjrbw erjwek wekjb rjERJK ABB RAEJKE BWE RWEJBEWJ B KREWBJ BWERBJ32J3B23B J BJ235JK BJJ523 2"
print re.search(ur'(wekjb|ABB)',a).group()
if re.search(ur'(wekjb|ABB)',a):
print 'success'
Output:
wekjb
success
Also, Python Regexes do not need to have a /
at the start and end.
Lastly, I added .group()
to the end of the print
line because I think this is what you want. Otherwise, you'd get something like <_sre.SRE_Match object at 0x01812220>
, which isn't too useful.