Skip to content
This repository

Java port of Oniguruma regexp library

branch: master
README.md

joni

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.

Something went wrong with that request. Please try again.