[Python-ideas] Proposed convenience functions for re module
Ron Adam
rrr at ronadam.com
Wed Jul 22 10:02:54 CEST 2009
Steven D'Aprano wrote:
> Following the thread "Experiment: Adding "re" to string objects.", I
> would like to propose the addition of two convenience functions to the
> re module:
>
>
> def multimatch(s, *patterns):
> """Do a re.match on s using each pattern in patterns,
> returning the first one to succeed, or None if they all fail."""
> for pattern in patterns:
> m = re.match(pattern, s)
> if m: return m
>
> def multisearch(s, *patterns):
> """Do a re.search on s using each pattern in patterns,
> returning the first one to succeed, or None if they all fail."""
> for pattern in patterns:
> m = re.search(pattern, s)
> if m: return m
>
>
> The rationale is to make the following idiom easier:
>
>
> m = re.match(s, pattern1)
> if not m:
> m = re.match(s, pattern2)
> if not m:
> m = re.match(s, pattern3)
> if not m:
> m = re.match(s, pattern4)
> if m:
> m.group()
>
>
> which will become:
>
> m = re.multimatch(s, pattern1, pattern2, pattern3, pattern4)
> if m:
> m.group()
>
>
> Is there any support or objections to this proposal? Any comments?
One of the needs I've run across is to enable the program user (possibly a
non-programmer) to do logical searches on data.
It would be nice if the search patterns specified by the program user could
be used directly by the functions. Search functions of this type would
take patterns that are more like what you would use for google or yahoo
searches instead of the more complex language re requires.
Ron
More information about the Python-ideas
mailing list