Regular expressions
Denis McMahon
denismfmcmahon at gmail.com
Tue Nov 3 07:38:12 EST 2015
On Mon, 02 Nov 2015 22:17:49 -0500, Seymore4Head wrote:
> On Mon, 2 Nov 2015 20:42:37 -0600, Tim Chase
> <python.list at tim.thechases.com> wrote:
>
>>On 2015-11-02 20:09, Seymore4Head wrote:
>>> How do I make a regular expression that returns true if the end of the
>>> line is an asterisk
>>Why use a regular expression?
> Because that is the part of Python I am trying to learn at the moment.
The most important thing to learn about regular expressions is when to
use them and when not to use them.
Returning true if the last character in a string is an asterisk is almost
certainly a brilliant example of when not to use a regular expression.
Here are some timings I tested:
#!/usr/bin/python
import re
import timeit
patt = re.compile("\*$")
start_time = timeit.default_timer()
for i in range(1000000):
x = re.match("\*$", "test 1")
elapsed = timeit.default_timer() - start_time
print "re, false", elapsed
start_time = timeit.default_timer()
for i in range(1000000):
x = re.match("\*$", "test *")
elapsed = timeit.default_timer() - start_time
print "re, true", elapsed
start_time = timeit.default_timer()
for i in range(1000000):
x = patt.match("test 1")
elapsed = timeit.default_timer() - start_time
print "compiled re, false", elapsed
start_time = timeit.default_timer()
for i in range(1000000):
x = patt.match("test *")
elapsed = timeit.default_timer() - start_time
print "compiled re, true", elapsed
start_time = timeit.default_timer()
for i in range(1000000):
x = "test 1"[-1] == "*"
elapsed = timeit.default_timer() - start_time
print "char compare, false", elapsed
start_time = timeit.default_timer()
for i in range(1000000):
x = "test *"[-1] == "*"
elapsed = timeit.default_timer() - start_time
print "char compare, true", elapsed
RESULTS:
re, false 2.4701731205
re, true 2.42048001289
compiled re, false 0.875837087631
compiled re, true 0.876382112503
char compare, false 0.26283121109
char compare, true 0.263465881348
The compiled re is about 3 times as fast as the uncompiled re. The
character comparison is about 3 times as fast as the compiled re.
--
Denis McMahon, denismfmcmahon at gmail.com
More information about the Python-list
mailing list