Here you can find the source of normalizeRegex(String pathPattern)
Parameter | Description |
---|---|
pathPattern | a parameter |
public static String normalizeRegex(String pathPattern)
//package com.java2s; /*// w w w. ja v a 2 s .c o m * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ public class Main { /** * Remove trailing regex path parts * @param pathPattern * @return */ public static String normalizeRegex(String pathPattern) { int[] offsets = offsets(pathPattern); int cursor = 0; int ch = pathPattern.codePointAt(cursor); for (;;) { switch (ch) { case '*': case '+': case '?': case '{': case '$': case '.': case '^': case '(': case '[': case '|': case ')': case '\\': // TODO: Should maybe handle escape sequences break; default: if (++cursor >= pathPattern.length()) { return pathPattern; } ch = pathPattern.codePointAt(cursor); continue; } break; } for (int i = 0; i < offsets.length; i++) { if (cursor < offsets[i]) { return pathPattern.substring(0, offsets[i - 1]); } if (cursor == offsets[i]) { return pathPattern.substring(0, offsets[i]); } } pathPattern = pathPattern.substring(0, cursor); return pathPattern.substring(0, pathPattern.lastIndexOf("/") + 1); } public static int[] offsets(String path) { int count, index; // count names count = 0; index = 0; if (path.isEmpty()) { // empty path has one name count = 0; } else { while (index < path.length()) { char c = path.charAt(index++); if (c != '/') { count++; while (index < path.length() && path.charAt(index) != '/') { index++; } } } } // populate offsets int[] offsets = new int[count]; count = 0; index = 0; while (index < path.length()) { char c = path.charAt(index); if (c == '/') { index++; } else { offsets[count++] = index++; while (index < path.length() && path.charAt(index) != '/') { index++; } } } return offsets; } }