Comments (4)
They're in #370
from swift-experimental-string-processing.
Note that there is a mode (?J)
that allows duplicate capture names, so we will also need to handle the coalescing of names for the purposes of typed captures. Perhaps the parser could mark capture groups that have names that have been used before.
from swift-experimental-string-processing.
A slight relaxation of requiring unique names for captures would be to only allow a name to correspond to a single capture index.
This would be following the advice given here, and would be consistent with how captures are available in Tuple outputs.
In Perl 5.10, PCRE 8.00, PHP 5.2.14, and Boost 1.42 (or later versions of these) it is best to use a branch reset group when you want groups in different alternatives to have the same name, as in (?|a(?[0-5])|b(?[4-7]))c\k. With this special syntax—group opened with (?| instead of (?:—the two groups named “digit” really are one and the same group. Then backreferences to that group are always handled correctly and consistently between these flavors.
from swift-experimental-string-processing.
A slight relaxation of requiring unique names for captures would be to only allow a name to correspond to a single capture index.
This would be following the advice given here, and would be consistent with how captures are available in Tuple outputs.
In Perl 5.10, PCRE 8.00, PHP 5.2.14, and Boost 1.42 (or later versions of these) it is best to use a branch reset group when you want groups in different alternatives to have the same name, as in (?|a(?[0-5])|b(?[4-7]))c\k. With this special syntax—group opened with (?| instead of (?:—the two groups named “digit” really are one and the same group. Then backreferences to that group are always handled correctly and consistently between these flavors.
@hamishknight are we tracking branch reset groups anywhere? I believe we were parsing them but I don't know if we implemented renumbering logic or not.
from swift-experimental-string-processing.
Related Issues (20)
- Regex non-deterministicly fails HOT 4
- Regex fails to match correctly in Xcode 14.3 (iOS, macOS) and Xcode 14.2 (macOS) HOT 8
- Refactor and unify code for built-in character class matching
- Remove the `anyScalar` CustomCharacterClass
- Verify scalar semantics in quantifier fast path HOT 1
- Add unit tests for advanced string algorithms
- Add benchmarks for string algorithms
- Crash in `BidirectionalCollection.firstRange(of:)` HOT 6
- SE-0351 was accepted with `mapOutput`, but it's not implemented HOT 3
- Unexpected compiler error for CharacterClass.inverted HOT 3
- Inline modifier fails to work consistently HOT 2
- Unicode 15 scripts and blocks are unrecognized HOT 1
- Add [Sub]String specializations for `contains` and other search algorithms
- RegexBuilder module is unavailable on Windows
- `contains<C>(_:)` does not behave as expected HOT 1
- Creating a `ChoiceOf` from an array HOT 1
- Don't operate on a collection and a range of indices if you can help it.
- Regex with positive lookahead crashes at runtime when accessing match.output HOT 1
- "\r?" regex doesn't seem to work properly HOT 1
- Regex does not match isolated combining mark as whitespace if preceded by whitespace HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from swift-experimental-string-processing.