Skip to content

jruby/joni

Repository files navigation

joni

Maven Central Build Status

Java port of Oniguruma regexp library

Usage

Imports

import org.jcodings.specific.UTF8Encoding;
import org.joni.Matcher;
import org.joni.Option;
import org.joni.Regex;

Matching

byte[] pattern = "a*".getBytes();
byte[] str = "aaa".getBytes();

Regex regex = new Regex(pattern, 0, pattern.length, Option.NONE, UTF8Encoding.INSTANCE);
Matcher matcher = regex.matcher(str);
int result = matcher.search(0, str.length, Option.DEFAULT);

Using captures

byte[] pattern = "(a*)".getBytes();
byte[] str = "aaa".getBytes();

Regex regex = new Regex(pattern, 0, pattern.length, Option.NONE, UTF8Encoding.INSTANCE);
Matcher matcher = regex.matcher(str);
int result = matcher.search(0, str.length, Option.DEFAULT);
if (result != -1) {
    Region region = matcher.getEagerRegion();
}

Using named captures

byte[] pattern = "(?<name>a*)".getBytes();
byte[] str = "aaa".getBytes();

Regex regex = new Regex(pattern, 0, pattern.length, Option.NONE, UTF8Encoding.INSTANCE);
Matcher matcher = regex.matcher(str);
int result = matcher.search(0, str.length, Option.DEFAULT);
if (result != -1) {
    Region region = matcher.getEagerRegion();
    for (Iterator<NameEntry> entry = regex.namedBackrefIterator(); entry.hasNext();) {
        NameEntry e = entry.next();
        int number = e.getBackRefs()[0]; // can have many refs per name
        // int begin = region.beg[number];
        // int end = region.end[number];
    }
}

License

Joni is released under the MIT License.

About

Java port of Oniguruma regexp library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages