Apparently oniguruma supports look-behind. Is there any documentation on how
to use this feature?
for example, if I had the string "~ABC~DE" and I want to return a list of
letters in the string which are preceeded by '~' ( ['A','D'] in this case) how
might I use the look-behind feature in oniguruma to achieve this? or, how
would I get a list of letters in the string which are not preceeded by '~'
(['B','C', 'E'] in this example.
(I know there are other ways of doing this, I'm just posing this as an example
of using look-behind).
Here's one that's a bit trickier: What if I had "~(ABC)DE" and I want the
tilde (a negation operator) to apply to each letter within the parens that it
preceeds, so that I would get ['A','B','C'], but in the case where the input
string is "(ABC)DE" I would get an empty list.... and then of course I would
want them to be nestable: "~(~ABC)" ('A' should not appear in the list in this
case since it's doubly negated - OK, that's probably going too far and
maybe it's getting to the point where I should break out RACC
Apparently oniguruma supports look-behind. Is there any documentation on how
to use this feature?
Essentially, they are the same as look-aheads ... zero-width assertions,
except that the look-behind expression must be a fixed width pattern (no
indeterminate quantifiers), and no captures are allowed in a negative
look-behind
for example, if I had the string "~ABC~DE" and I want to return a list of
letters in the string which are preceeded by '~' ( ['A','D'] in this case) how
might I use the look-behind feature in oniguruma to achieve this? or, how
would I get a list of letters in the string which are not preceeded by '~'
(['B','C', 'E'] in this example.
str = "~ABC~DE"
p str.scan(/(?<=~)[A-Z]/)
p str.scan(/(?<!~)[A-Z]/)
gives:
["A", "D"]
["B", "C", "E"]
regards,
andrew
···
On 12 Sep 2004 03:44:24 GMT, Phil Tomson <ptkwt@aracnet.com> wrote:
--
Andrew L. Johnson http://www.siaris.net/
There are two types of programming languages; the ones that people bitch
about and the ones that no one uses.
-- Bjarne Stroustrup
In article <ABQ0d.397334$gE.56953@pd7tw3no>,
^^^^^^^^
hmmm...
···
Andrew Johnson <ajohnson@cpan.org> wrote:
On 12 Sep 2004 03:44:24 GMT, Phil Tomson <ptkwt@aracnet.com> wrote:
Apparently oniguruma supports look-behind. Is there any documentation on how
to use this feature?
Essentially, they are the same as look-aheads ... zero-width assertions,
except that the look-behind expression must be a fixed width pattern (no
indeterminate quantifiers), and no captures are allowed in a negative
look-behind
for example, if I had the string "~ABC~DE" and I want to return a list of
letters in the string which are preceeded by '~' ( ['A','D'] in this case) how
might I use the look-behind feature in oniguruma to achieve this? or, how
would I get a list of letters in the string which are not preceeded by '~'
(['B','C', 'E'] in this example.
str = "~ABC~DE"
p str.scan(/(?<=~)[A-Z]/)
p str.scan(/(?<!~)[A-Z]/)
gives:
["A", "D"]
["B", "C", "E"]
Thanks. That's what I was looking for. Is this essentially the same way that
it works in Perl?
Essentially, they are the same as look-aheads ... zero-width assertions,
except that the look-behind expression must be a fixed width pattern (no
indeterminate quantifiers), and no captures are allowed in a negative
look-behind
So it is implemented as zero-width look-ahead + eating as many characters as the content matches?
(I've thought about implementing /foo/.preceded_by('bar') as /(?!bar).{3}foo/.)
> Apparently oniguruma supports look-behind. Is there any documentation on
> how to use this feature?
Essentially, they are the same as look-aheads ... zero-width assertions,
except that the look-behind expression must be a fixed width pattern (no
indeterminate quantifiers), and no captures are allowed in a negative
look-behind
Oniguruma supports alternation inside lookbehind, so you can get a similar
behavior as quantifiers.
AEditor's regexp engine supports variable width lookbehind, where you
can use quantifiers inside lookbehind.. (with inversed left-most-longest
rule).
It would be good if Oniguruma had support for quantifiers inside lookbehind.
> > Apparently oniguruma supports look-behind. Is there any documentation
> > on how to use this feature?
>
> Essentially, they are the same as look-aheads ... zero-width assertions,
> except that the look-behind expression must be a fixed width pattern (no
> indeterminate quantifiers), and no captures are allowed in a negative
> look-behind
Oniguruma supports alternation inside lookbehind, so you can get a similar
behavior as quantifiers.
AEditor's regexp engine supports variable width lookbehind, where you
can use quantifiers inside lookbehind.. (with inversed left-most-longest
rule).
It would be good if Oniguruma had support for quantifiers inside
lookbehind.