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.