Comments (2)
Capture groups with "range" multiplicity need a bit more effort: in order to match them reliably, they need to be transformed into some number of fixed capture groups plus a repeated capture group by rewriting the regular expression. This will then require careful counting of the capture groups that have been repeated, since their numbering will have changed.
from kaleidoscope.
I think this problem is easier than I previously thought. Firstly, we should give each capturing group we wish to capture a name (e.g. r1
, r2
, rn
, etc) of the for (?<rn>X)
. But we should also rewrite repeated capturing groups (those followed by *
, +
, {n}
etc) to be inside an additional set of parentheses, i.e.
f(o.)*bar
would be rewritten, f(?<rn>(o.)*)bar
. We should then construct and compile the pattern from inside the original parentheses, i.e. o.
. We can attempt to match this repeatedly on the match extracted from the outer parentheses to get a list of strings.
from kaleidoscope.
Related Issues (20)
- Support for regex flags HOT 2
- Fails to parse JSL character classes HOT 2
- captures wrong group, sometimes HOT 1
- `make test` fails after installing
- Scala 2.13 release HOT 5
- provide a "glob" extractor
- Support flags within Kaleidoscope regular expressions HOT 1
- Rename `rcut` to `cut`
- Confirm that `Text` is used universally instead of `String`
- Switch to using named groups
- Comprehensively test regular expressions HOT 1
- Provide more detail in error messages
- Regex interpolator should fail to compile rather than throw `InvalidRegexError`
- Include offsets in error messages
- Reinstate immutable arrays in place of mutable arrays
- Return an `Optional` instead of an `Option` for optional capturing groups
- Allow capturing of characters
- Support pattern matching of byte arrays
- Support for BASE64 and related literals
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 kaleidoscope.