@Override public int compareTo(byte[] value, int offset, int length) { // Use subsequence match instead of full sequence match to adhere to the // principle of least surprise. Matcher m = pattern.matcher(value); return m.search(offset, length, pattern.getOptions()) < 0 ? 1 : 0; }
@Override public int getFlags() { return pattern.getOptions(); }
Regex r = new Regex("YOURREGEX"); // search for a match within a string r.search("YOUR STRING YOUR STRING"); if(r.didMatch()){ // Prints "true" -- r.didMatch() is a boolean function // that tells us whether the last search was successful // in finding a pattern. // r.left() returns left String , string before the matched pattern int index = r.left().length(); }
private boolean substr(byte[] srcBytes, int offset, int range, ImmutableBytesWritable outPtr) { Matcher matcher = pattern.matcher(srcBytes, 0, range); boolean ret = matcher.search(offset, range, Option.DEFAULT) >= 0; if (ret) { int len = matcher.getEnd() - matcher.getBegin(); outPtr.set(srcBytes, matcher.getBegin(), len); } else { outPtr.set(ByteUtil.EMPTY_BYTE_ARRAY); } return ret; }
public JoniRegexEngine(String regex, int flags) { this.regex = regex; byte[] b = Bytes.toBytes(regex); this.pattern = new Regex(b, 0, b.length, patternToJoniFlags(flags), encoding, Syntax.Java); }
Regex r = new Regex(@"^(\1.|^.)+$"); Console.WriteLine(r.IsMatch("aababc")); // True Console.WriteLine(r.IsMatch("1121231234")); // True Console.WriteLine(r.IsMatch("iLoveRegEx")); // False for (int n = 0; n <= 50; n++) { Match m = r.Match("".PadLeft(n)); if (m.Success) { Console.WriteLine("{0} = sum(1..{1})", n, m.Groups[1].Length); } } // 1 = sum(1..1) // 3 = sum(1..2) // 6 = sum(1..3) // 10 = sum(1..4) // 15 = sum(1..5) // 21 = sum(1..6) // 28 = sum(1..7) // 36 = sum(1..8) // 45 = sum(1..9)
new PArrayDataTypeEncoder(PVarchar.INSTANCE, sortOrder); int srcRange = srcOffset + srcLen; Matcher matcher = pattern.matcher(srcBytes, 0, srcRange); int cur = srcOffset; boolean append; while (true) { int nextCur = matcher.search(cur, srcRange, Option.DEFAULT); if (nextCur < 0) { builder.appendValue(srcBytes, cur, srcRange - cur); if (cur == matcher.getBegin()) { builder.appendValue(srcBytes, cur, 0); if (cur < matcher.getBegin()) { builder.appendValue(srcBytes, cur, matcher.getBegin() - cur); cur = matcher.getEnd();
@Override public int compareTo(byte[] value, int offset, int length) { // Use subsequence match instead of full sequence match to adhere to the // principle of least surprise. Matcher m = pattern.matcher(value); return m.search(offset, length, pattern.getOptions()) < 0 ? 1 : 0; }
public JONIPattern(String patternString, int flags, Encoding coding) { this.patternString = patternString; if (patternString != null) { byte[] bytes = patternString.getBytes(); pattern = new Regex(bytes, 0, bytes.length, flags, coding, Syntax.Java); } else { pattern = null; } }
@Override public int getFlags() { return pattern.getOptions(); }
Matcher matcher = pattern.matcher(srcBytes, 0, srcRange); int cur = srcOffset; List<PairInt> searchResults = new LinkedList<PairInt>(); int totalBytesNeeded = 0; while (true) { int nextCur = matcher.search(cur, srcRange, Option.DEFAULT); if (nextCur < 0) { totalBytesNeeded += srcRange - cur; break; searchResults.add(new PairInt(matcher.getBegin(), matcher.getEnd())); totalBytesNeeded += (nextCur - cur) + replaceLen; cur = matcher.getEnd();
public JoniRegexEngine(String regex, int flags) { this.regex = regex; byte[] b = Bytes.toBytes(regex); this.pattern = new Regex(b, 0, b.length, patternToJoniFlags(flags), encoding, Syntax.Java); }
@Override public byte[] toByteArray() { ComparatorProtos.RegexStringComparator.Builder builder = ComparatorProtos.RegexStringComparator.newBuilder(); builder.setPattern(regex); builder.setPatternFlags(joniToPatternFlags(pattern.getOptions())); builder.setCharset(encoding.getCharsetName()); builder.setEngine(EngineType.JONI.name()); return builder.build().toByteArray(); }
@Override public byte[] toByteArray() { ComparatorProtos.RegexStringComparator.Builder builder = ComparatorProtos.RegexStringComparator.newBuilder(); builder.setPattern(regex); builder.setPatternFlags(joniToPatternFlags(pattern.getOptions())); builder.setCharset(encoding.getCharsetName()); builder.setEngine(EngineType.JONI.name()); return builder.build().toByteArray(); }