-
Notifications
You must be signed in to change notification settings - Fork 4k
Add a solution that enables the direct use of atomic groups #3699
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
CLA assistant check
All committers have signed the CLA.
dad802a to
1bbc66e
Compare
1bbc66e to
751946d
Compare
slevithan
commented
Jun 18, 2024
I updated the PR to make some additional tweaks:
- Atomic groups don't capture, so I changed "atomic capturing groups" to "atomic groups" (their correct name).
- The emulation trick (with a backreference to a capturing group inside a lookahead) emulates an atomic group, not a possessive quantifier, so I corrected this. This distinction is subtle since possessive quantifiers are sugar for some common uses of atomic groups, but it is important. For example, the lookahead/capture trick accurately emulates the behavior of an atomic group like
(?>...|...)which is not followed by a quantifier at all.
The solution described where atomic groups are emulated using lookahead and backreferences is useful but can be tricky to use and error prone (e.g. when quantifying the result, or in longer patterns that rely on multiple atomic groups). So this adds a link to an easy to use solution that enables the direct use of atomic groups via `(?>...)` in native JS regexes.
751946d to
dd86e7e
Compare
slevithan
commented
Aug 16, 2024
Ping @Alexandre887 for review. This PR makes this (already quite informative) article even better for readers.
slevithan
commented
Mar 8, 2025
Hey @smith558, any problem with landing this PR as is?
Alexandre887
commented
Mar 9, 2025
Hey @slevithan, just want to make it clear that PRs are reviewed by volunteers here, so there is no strict timetable for when a particular PR will be merged or anything like that — it's directly dependent on the availability of free time and willingness to review a particular PR. So if there is no response for a long time, it doesn't mean that your PR has been forgotten about, or that it has some flaws (otherwise someone would have said you about it). Thanks for your patience.
The catastrophic backtracking solution described where atomic groups are emulated using lookahead and backreferences is useful but can be tricky to use and error prone (e.g. when quantifying the result, or in longer patterns that rely on multiple atomic groups). So this adds a link to an easy to use solution that enables the direct use of atomic groups via
(?>...)in native JS regexes.