33
votes

I'm having a hell of a time trying to transfer my experience with javascript regex to Python.

I'm just trying to get this to work:

print(re.match('e','test'))

...but it prints None. If I do:

print(re.match('e','est'))

It matches... does it by default match the beginning of the string? When it does match, how do I use the result?

How do I make the first one match? Is there better documentation than the python site offers?

2

2 Answers

58
votes

re.match implicitly adds ^ to the start of your regex. In other words, it only matches at the start of the string.

re.search will retry at all positions.

Generally speaking, I recommend using re.search and adding ^ explicitly when you want it.

http://docs.python.org/library/re.html

9
votes

the docs is clear i think.

re.match(pattern, string[, flags])ΒΆ

If zero or more characters **at the beginning of string** match the

regular expression pattern, return a corresponding MatchObject instance. Return None if the string does not match the pattern; note that this is different from a zero-length match.