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.