On 2015-11-03 19:04, Michael Torrie wrote: > Grep can use regular expressions (and I do so with it regularly), > but it's default mode is certainly not regular expressions, and it > is still very powerful.
I suspect you're thinking of `fgrep` (AKA "grep -F") which uses fixed strings rather than regular expressions. By default, `grep` certainly does use regular expressions: tim@linux$ seq 5 | grep "1*" tim@bsd$ jot 5 | grep "1*" will output the entire input, not just lines containing a "1" followed by an asterisk. > I've never used regular expressions in a database query language; > until this moment I didn't know any supported such things in their > queries. Good to know. How you would index for regular > expressions in queries I don't know. At least PostgreSQL allows for creating indexes on a particular regular expression. E.g. (shooting from the hip so I might have missed something): CREATE TABLE contacts ( -- ... phonenumber VARCHAR(15), -- ... ) CREATE INDEX contacts_just_phone_digits_idx ON contacts((regexp_replace(phonenumber, '[^0-9]', ''))); INSERT INTO contacts(..., phonenumber, ...) VALUES (..., '800-555-1212', ...) SELECT * FROM contacts WHERE -- should use contacts_just_phone_digits_idx regexp_replace(phonenumber, '[^0-9]', '') = '8005551212'; It's not as helpful as one might hope because you're stuck using a fixed regexp rather than an arbitrary regexp, but if you have a particular regexp you search for frequently, you can index it. Otherwise, you'd be doing full table-scans (or at least a full scan of whatever subset the active non-regexp'ed index yields) which can be pretty killer on performance. You'd have to research on other DB engines. -tkc -- https://mail.python.org/mailman/listinfo/python-list