MatchResult support for named groups

Stuart Marks stuart.marks at oracle.com
Tue Dec 8 06:13:14 UTC 2020


OK, thanks, good information. Clearly support for named groups is the most important 
thing missing from MatchResult.

s'marks

On 12/4/20 11:43 PM, Cay Horstmann wrote:
> Hi Stuart,
> 
> 1: If there is no match at all, then results yields the empty stream. I don't think 
> anything else is required.
> 
> 2/3: I wrote a fair number of regex patterns in Java, ever since they appeared in 
> 2002. I can say with confidence that I never once used hitEnd/requireEnd, or seen it 
> used. I note they occur in one file in the JDK 11 source, in the Scanner class. But 
> not in a loop that fetches all matches, but after a single call to find or 
> lookingAt. I think these are exceedingly uncommon.
> 
> In contrast, looping over matcher.find() and extracting groups is common, and named 
> groups are a best practice 
> (https://urldefense.com/v3/__https://eslint.org/docs/rules/prefer-named-capture-group__;!!GqivPVa7Brio!I3YBH6KonWfqm4zW7pQRatPsLcj4rRjGOveB6NWQedZVU8BeJ3hknZcPy7rC1G2fug$ 
> ).
> 
> Cheers,
> 
> Cay
> 
> Il 04/12/2020 19:53, Stuart Marks ha scritto:
>> Hi Cay,
>>
>> Thanks for mentioning this. It's good to know that adding this provides value to 
>> people who are actually trying to use this stuff (as opposed to adding stuff 
>> merely for the sake of completeness, as often seems to arise).
>>
>> I've added some notes to JDK-8065554.
>>
>> Looking at this more closely, it seems to me that MatchResult ought to include 
>> more match-result-related information that's currently only in Matcher, namely:
>>
>> 1. whether there was a match at all
>> 2. hitEnd
>> 3. requireEnd
>>
>> If you have any thoughts on these, please let me know.
>>
>> s'marks
>>
>> On 12/2/20 2:53 AM, Cay Horstmann wrote:
>>> Hello, I'd like to raise awareness for
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8180352
>>> https://bugs.openjdk.java.net/browse/JDK-8072984
>>> https://bugs.openjdk.java.net/browse/JDK-8065554
>>>
>>> These all ask for MatchResult.group(String name). What they don't mention is that 
>>> this is more urgent in light of the methods
>>>
>>> Stream<MatchResult> Matcher.results() // 
>>> https://bugs.openjdk.java.net/browse/JDK-8071479
>>> Stream<MatchResult> Scanner.findAll(Pattern pattern) // 
>>> https://bugs.openjdk.java.net/browse/JDK-8072722
>>>
>>> In particular, Matcher.results() seems a cleaner way of collecting match results 
>>> than calling while (matcher.find()).
>>>
>>> But then MatchResult needs to support the same queries that Matcher provides. I 
>>> believe the only missing one is group(String name).
>>>
>>> Cheers,
>>>
>>> Cay
>>>
>>> NB. There are related requests that ask for finding group names in patterns, or 
>>> for correlating group names and numbers. I have formed no opinion on their merits.
>>>
> 


More information about the core-libs-dev mailing list