osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Where is _sre.SRE_Match?


On Thu, Feb 8, 2018 at 4:57 AM,  <breamoreboy at gmail.com> wrote:
> On Wednesday, February 7, 2018 at 5:20:42 PM UTC, Chris Angelico wrote:
>> On Thu, Feb 8, 2018 at 4:15 AM, Peng Yu wrote:
>> > Hi,
>> >
>> > I see _sre.SRE_Match is returned by re.match. But I don't find where
>> > it is defined. Does anybody know how to get its help page within
>> > python command line? Thanks.
>> >
>> >>>> import re
>> >>>> m = re.match('a', 'abc')
>> >>>> print type(m)
>> > <type '_sre.SRE_Match'>
>> >>>> _sre.SRE_Match
>> > Traceback (most recent call last):
>> >   File "<stdin>", line 1, in <module>
>> > NameError: name '_sre' is not defined
>> >
>>
>> You can "import _sre" if you want access to that module, but the
>> leading underscore is a strong indication that this isn't something
>> you should be looking at - it's an implementation detail.
>>
>> Python 3 makes this type public:
>>
>> >>> import re
>> >>> re.match('a', 'abc')
>> <re.Match object; span=(0, 1), match='a'>
>> >>> re.Match
>> <class 're.Match'>
>>
>> So if you truly need to examine this type, I suggest switching to a
>> newer Python.
>>
>> ChrisA
>
> I'm confused:-
>
> Python 3.6.3 (default, Oct  3 2017, 21:45:48)
> [GCC 7.2.0] on linux
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import re
>>>> re.match('a', 'abc')
> <_sre.SRE_Match object; span=(0, 1), match='a'>
>>>>
>
> Perhaps not, https://bugs.python.org/issue30397 so 3.7 only.
>

Hmm, sorry for the confusion. I thought it landed earlier. (My default
'python3' is 3.7 so I didn't notice on testing.)

Well, as you can see from the tracker issue, the classes were
deliberately exposed in the way that I described. So... it's not just
a matter of getting Python 3, but of getting *the latest* Python, in
which what you request is easier.

ChrisA