File: README.md

package info (click to toggle)
jruby-joni 2.1.40-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, sid
  • size: 1,236 kB
  • sloc: java: 16,920; xml: 210; sh: 153; makefile: 2
file content (68 lines) | stat: -rw-r--r-- 1,999 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
joni
====

[![Maven Central](https://img.shields.io/maven-central/v/org.jruby.joni/joni.svg)](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.jruby.joni%22)
[![Build Status](https://secure.travis-ci.org/jruby/joni.png)](http://travis-ci.org/jruby/joni)

Java port of Oniguruma regexp library

## Usage

### Imports
  ```java
      import org.jcodings.specific.UTF8Encoding;
      import org.joni.Matcher;
      import org.joni.Option;
      import org.joni.Regex;
  ```

### Matching

  ```java
      
      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

  ```java
    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

  ```java
    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](http://www.opensource.org/licenses/MIT).