[Patches] [ python-Patches-572936 ] (?(id/name)yes|no) re implementation
SourceForge.net
noreply@sourceforge.net
Sat, 19 Apr 2003 23:23:37 -0700
Patches item #572936, was opened at 2002-06-24 03:41
Message generated for change (Comment added) made by loewis
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=572936&group_id=5470
Category: Library (Lib)
Group: Python 2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: Gustavo Niemeyer (niemeyer)
>Assigned to: Gustavo Niemeyer (niemeyer)
Summary: (?(id/name)yes|no) re implementation
Initial Comment:
This patch implements a regular expression feature, which allows
some interesting patterns, in the same way as implemented in perl.
For example, (?(1)yes|no) matches with "yes" if group "1" exists, and
with "no", if it doesn't. Without this feature, the regular expression
must be duplicated to get the same results. In addition to perl's
feature, it will also accept a Python named group as argument.
Here's an example:
(<)?\w+@\w+(\.\w+)+(?(1)>)
This is a poor email matching regular expression, which will match
with or without the "<>" symbols.
----------------------------------------------------------------------
>Comment By: Martin v. Löwis (loewis)
Date: 2003-04-20 08:23
Message:
Logged In: YES
user_id=21627
I like the patch in principle, but I have a number of
additional concerns:
- there are no test cases
- the feature is declared experimental in perlre(1). Why?
- Shouldn't there be a semantic restriction that the back
reference is only allowed if it points to a group that is
known
to precede? I.e. is
(X)|(?(1)Y)
valid? If not, the restriction should be atleast documented,
but if possible, it should also be implemented.
----------------------------------------------------------------------
Comment By: Gustavo Niemeyer (niemeyer)
Date: 2003-04-19 23:30
Message:
Logged In: YES
user_id=7887
That patch is around for a long time. Should I work on it,
fixing that problem, and apply it? Do you agree with the
feature inclusion?
I remember that the main reason for implementing this is
because it is hard to achieve the same results without it.
You have to rewrite the whole match twice inside an or'ed group
(e.g. "(<... match email ...>|... match email ...)").
----------------------------------------------------------------------
Comment By: Martin v. Löwis (loewis)
Date: 2003-04-19 10:50
Message:
Logged In: YES
user_id=21627
If you add new opcodes, you should also change SRE_MAGIC.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=572936&group_id=5470