Re: Adding new escapes to regex module
MRAB <[email protected]> Wed, 17 Aug 2022 17:34:26 +0100
| Newsgroups | gmane.comp.python.devel |
|---|---|
| Message-ID | <[email protected]> |
On 2022-08-17 08:25, Serhiy Storchaka wrote:
> 16.08.22 23:24, MRAB пише:
>> Other regex implementations have escape sequences for horizontal
>> whitespace (`\h` and `\H`) and vertical whitespace (`\v` and `\V`).
>>
>> The regex module already supports `\h`, but I can't use `\v` because it
>> represents `\0x0b', as it does in the re module.
>>
>> Now that someone has asked for it, I'm trying to find a nice way of
>> adding it, and I'm currently thinking that maybe I could use `\y` and
>> `\Y` instead as they look a little like `\v` and `\V`, and, also,
>> vertical whitespace is sort-of in the y-direction.
>>
>> As far as I can tell, only ProgressSQL uses them, and, even then, it's
>> for what everyone else writes as `\b` and `\B`.
>>
>> I want the regex module to remain compatible with the re module, in case
>> they get added there sometime in the future.
>>
>> Opinions?
>
> I do not like introducing escapes which are not supported in other RE
> implementations. There is a chance of future conflicts.
>
> Java broke compatibility in Java 8 by redefining \v from a single
> vertical tab character to the vertical whitespace class. I am not sure
> that it is a good example that we should follow, because different
> semantic of \v in raw and non-raw strings is a potential source of bugs.
> But with special flag which controls the meaning of \v it may be more safe.
>
> Horizontal whitespace can be matched by [
> \t\xA0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000] in re or [\t\p{Zs}]
> in regex. Vertical whitespace can be matched by
> [\n\x0b\f\r\x85\u2028\u2029]. Note that there is a dedicated Unicode
> category for horizontal whitespaces (excluding the tab itself), but not
> for vertical whitespaces, it means that vertical whitespaces are less
> important.
>
> In any case it is simple to introduce special Unicode categories and use
> \p{ht} and \p{vt} for horizontal and vertical whitespaces.
> It's not just Java. Perl supports all 4 of \h, \H, \v and \V. That might
be why Java 8 changed.
_______________________________________________
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at https://mail.python.org/archives/list/[email protected]/message/UPDWUF3RDVKG7LNKSS4LHCSF7XA32H6W/
Code of Conduct: http://python.org/psf/codeofconduct/