Python supports string pattern matching to regular expressions, using Perl style regular expressions.
The
re module - loaded via
import re
brings the appropriate elements into your program ... ready to use.
Patterns that you want to match against are called
Regular Expressions and are created as objects from strings using the
re.compile method. For example
looklike = r'([a-z]+)\.([a-z]+)\[([^\]]+)\]'
el_matcher = re.compile(looklike,re.IGNORECASE)
And you can then use the compiled regular expressions to find parts of data strings that match the pattern you have defined:
zz = el_matcher.findall(thing)
If you're new to regular expressions, you'll probably find the definition strings - the regular expressions - a bit overpowering at first> but as you read into them the become easier. Let's analyse the major elements of the one above:
[a-z] A letter in the range a to z
+ One or more (of the previous item)
\. Literally a full stop
[a-z] A letter in the range a to z
+ One or more (of the previous item)
\[ Literally a [
[^\] Any character which is NOT a ]
+ One or more (of the previous item)
\] Literally a ]
Read that against
sphere.v[32:58] and you'll see that it does indeed meet the description ... the extra round brackets in the original regular expression show Python which particular parts of the match are to be stored into separate objects that are returned from the match so that use can be made of them in subsequent lines of the program.
The complete example that I've been quoting from above - which matches a string of the type that may be produced by Autocad's Maya, for example, may be found
here ... and we cover regular expressions on many of our courses (including our
Python course, and indeed we run a special
Regular Expression Course for those who need detailed coverage.
(written 2008-11-08)
2135
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Y108 - Python - String Handling [4027] Collections in Python - list tuple dict and string. - (2013-03-04)
[3886] Formatting output - why we need to, and first Python example - (2012-10-09)
[3796] Backquote, backtic, str and repr in Python - conversion object to string - (2012-07-05)
[3469] Teaching dilemma - old tricks and techniques, or recent enhancements? - (2011-10-08)
[3468] Python string formatting - the move from % to str.format - (2011-10-08)
[3349] Formatting output in Python through str.format - (2011-07-07)
[3218] Matching a license plate or product code - Regular Expressions - (2011-03-28)
[3090] Matching to a string - what if it matches in many possible ways? - (2010-12-17)
[2814] Python - splitting and joining strings - (2010-06-16)
[2780] Formatted Printing in Python - (2010-05-25)
[2765] Running operating system commands from your Python program - (2010-05-14)
[2721] Regular Expressions in Python - (2010-04-14)
[2692] Flexible search and replace in Python - (2010-03-25)
[2406] Pound Sign in Python Program - (2009-09-15)
[2284] Strings as collections in Python - (2009-07-12)
[1608] Underlining in Perl and Python - the x and * operator in use - (2008-04-12)
[1517] Python - formatting objects - (2008-01-24)
[1195] Regular Express Primer - (2007-05-20)
[1110] Python - two different splits - (2007-03-15)
[970] String duplication - x in Perl, * in Python and Ruby - (2006-12-07)
[954] Splitting Pythons in Bradford - (2006-11-29)
[943] Matching within multiline strings, and ignoring case in regular expressions - (2006-11-25)
[903] Pieces of Python - (2006-10-23)
[773] Breaking bread - (2006-06-22)
[560] The fencepost problem - (2006-01-10)
[496] Python printf - (2005-11-15)
[463] Splitting the difference - (2005-10-13)
[324] The backtick operator in Python and Perl - (2005-05-25)
Y115 - Additional Python Facilities [4085] JSON from Python - first principles, easy example - (2013-05-13)
[3442] A demonstration of how many Python facilities work together - (2011-09-16)
[3089] Python regular expressions - repeating, splitting, lookahead and lookbehind - (2010-12-17)
[2790] Joining a MySQL table from within a Python program - (2010-06-02)
[2786] Factory methods and SqLite in use in a Python teaching example - (2010-05-29)
[2764] Python decorators - your own, staticmethod and classmethod - (2010-05-14)
[2746] Model - View - Controller demo, Sqlite - Python 3 - Qt4 - (2010-04-29)
[2745] Connecting Python to sqlite and MySQL databases - (2010-04-28)
[2655] Python - what is going on around me? - (2010-02-28)
[2462] Python - how it saves on compile time - (2009-10-20)
[2435] Serialization - storing and reloading objects - (2009-10-04)
[2407] Testing code in Python - doctest, unittest and others - (2009-09-16)
[1337] A series of tyre damages - (2007-09-08)
[1336] Ignore case in Regular Expression - (2007-09-08)
[1305] Regular expressions made easy - building from components - (2007-08-16)
[1149] Turning objects into something you can store - Pickling (Python) - (2007-04-15)
[1136] Buffering output - why it is done and issues raised in Tcl, Perl, Python and PHP - (2007-04-06)
[1043] Sending an email from Python - (2007-01-18)
[901] Python - listing out the contents of all variables - (2006-10-21)
[753] Python 3000 - the next generation - (2006-06-09)
[672] Keeping your regular expressions simple - (2006-04-05)
[663] Python to MySQL - (2006-03-31)
[239] What and why for the epoch - (2005-03-08)
[208] Examples - Gadfly, NI Number, and Tcl to C interface - (2005-02-10)
[183] The elegance of Python - (2005-01-19)
5705
Some other Articles
Melksham Chamber of Commerce, or the FSBDynamic code - PythonPascals Triangle in Python and JavaGuests doing a bunk?Python Regular ExpressionsWhat are exceptions - Python based answerIs it worth it?List Comprehensions in PythonBarack Obama wins US PredidencyOptional and named parameters in Python