亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? re.java

?? jakarta-regexp-1.5 正則表達式的源代碼
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
     */    protected final void setParenStart(int which, int i)    {        if (which < parenCount)        {            switch (which)            {                case 0:                    start0 = i;                    break;                case 1:                    start1 = i;                    break;                case 2:                    start2 = i;                    break;                default:                    if (startn == null)                    {                        allocParens();                    }                    startn[which] = i;                    break;            }        }    }    /**     * Sets the end of a paren level     *     * @param which Which paren level     * @param i Index in input array     */    protected final void setParenEnd(int which, int i)    {        if (which < parenCount)        {            switch (which)            {                case 0:                    end0 = i;                    break;                case 1:                    end1 = i;                    break;                case 2:                    end2 = i;                    break;                default:                    if (endn == null)                    {                        allocParens();                    }                    endn[which] = i;                    break;            }        }    }    /**     * Throws an Error representing an internal error condition probably resulting     * from a bug in the regular expression compiler (or possibly data corruption).     * In practice, this should be very rare.     *     * @param s Error description     */    protected void internalError(String s) throws Error    {        throw new Error("RE internal error: " + s);    }    /**     * Performs lazy allocation of subexpression arrays     */    private void allocParens()    {        // Allocate arrays for subexpressions        startn = new int[maxParen];        endn = new int[maxParen];        // Set sub-expression pointers to invalid values        for (int i = 0; i < maxParen; i++)        {            startn[i] = -1;            endn[i] = -1;        }    }    /**     * Try to match a string against a subset of nodes in the program     *     * @param firstNode Node to start at in program     * @param lastNode  Last valid node (used for matching a subexpression without     *                  matching the rest of the program as well).     * @param idxStart  Starting position in character array     * @return Final input array index if match succeeded.  -1 if not.     */    protected int matchNodes(int firstNode, int lastNode, int idxStart)    {        // Our current place in the string        int idx = idxStart;        // Loop while node is valid        int next, opcode, opdata;        int idxNew;        char[] instruction = program.instruction;        for (int node = firstNode; node < lastNode; )        {            opcode = instruction[node /* + offsetOpcode */];            next   = node + (short) instruction[node + offsetNext];            opdata = instruction[node + offsetOpdata];            switch (opcode)            {                case OP_MAYBE:                case OP_STAR:                    {                        // Try to match the following subexpr. If it matches:                        //   MAYBE:  Continues matching rest of the expression                        //    STAR:  Points back here to repeat subexpr matching                        if ((idxNew = matchNodes(node + nodeSize, maxNode, idx)) != -1)                        {                            return idxNew;                        }                        // If failed, just continue with the rest of expression                        break;                    }                case OP_PLUS:                    {                        // Try to match the subexpr again (and again (and ...                        if ((idxNew = matchNodes(next, maxNode, idx)) != -1)                        {                            return idxNew;                        }                        // If failed, just continue with the rest of expression                        // Rest is located at the next pointer of the next instruction                        // (which must be OP_CONTINUE)                        node = next + (short) instruction[next + offsetNext];                        continue;                    }                case OP_RELUCTANTMAYBE:                case OP_RELUCTANTSTAR:                    {                        // Try to match the rest without using the reluctant subexpr                        if ((idxNew = matchNodes(next, maxNode, idx)) != -1)                        {                            return idxNew;                        }                        // Try reluctant subexpr. If it matches:                        //   RELUCTANTMAYBE: Continues matching rest of the expression                        //    RELUCTANTSTAR: Points back here to repeat reluctant star matching                        return matchNodes(node + nodeSize, next, idx);                    }                case OP_RELUCTANTPLUS:                    {                        // Continue matching the rest without using the reluctant subexpr                        if ((idxNew = matchNodes(next + (short) instruction[next + offsetNext], maxNode, idx)) != -1)                        {                            return idxNew;                        }                        // Try to match subexpression again                        break;                    }                case OP_OPEN:                    // Match subexpression                    if ((program.flags & REProgram.OPT_HASBACKREFS) != 0)                    {                        startBackref[opdata] = idx;                    }                    if ((idxNew = matchNodes(next, maxNode, idx)) != -1)                    {                        // Increase valid paren count                        if (opdata >= parenCount)                        {                            parenCount = opdata + 1;                        }                        // Don't set paren if already set later on                        if (getParenStart(opdata) == -1)                        {                            setParenStart(opdata, idx);                        }                    }                    return idxNew;                case OP_CLOSE:                    // Done matching subexpression                    if ((program.flags & REProgram.OPT_HASBACKREFS) != 0)                    {                        endBackref[opdata] = idx;                    }                    if ((idxNew = matchNodes(next, maxNode, idx)) != -1)                    {                        // Increase valid paren count                        if (opdata  >= parenCount)                        {                            parenCount = opdata + 1;                        }                        // Don't set paren if already set later on                        if (getParenEnd(opdata) == -1)                        {                            setParenEnd(opdata, idx);                        }                    }                    return idxNew;                case OP_BACKREF:                    {                        // Get the start and end of the backref                        int s = startBackref[opdata];                        int e = endBackref[opdata];                        // We don't know the backref yet                        if (s == -1 || e == -1)                        {                            return -1;                        }                        // The backref is empty size                        if (s == e)                        {                            break;                        }                        // Get the length of the backref                        int l = e - s;                        // If there's not enough input left, give up.                        if (search.isEnd(idx + l - 1))                        {                            return -1;                        }                        // Case fold the backref?                        final boolean caseFold =                            ((matchFlags & MATCH_CASEINDEPENDENT) != 0);                        // Compare backref to input                        for (int i = 0; i < l; i++)                        {                            if (compareChars(search.charAt(idx++), search.charAt(s + i), caseFold) != 0)                            {                                return -1;                            }                        }                    }                    break;                case OP_BOL:                    // Fail if we're not at the start of the string                    if (idx != 0)                    {                        // If we're multiline matching, we could still be at the start of a line                        if ((matchFlags & MATCH_MULTILINE) == MATCH_MULTILINE)                        {                            // Continue if at the start of a line                            if (isNewline(idx - 1))                            {                                break;                            }                        }                        return -1;                    }                    break;                case OP_EOL:                    // If we're not at the end of string                    if (!search.isEnd(0) && !search.isEnd(idx))                    {                        // If we're multi-line matching                        if ((matchFlags & MATCH_MULTILINE) == MATCH_MULTILINE)                        {                            // Continue if we're at the end of a line                            if (isNewline(idx))                            {                                break;                            }                        }                        return -1;                    }                    break;                case OP_ESCAPE:                    // Which escape?                    switch (opdata)                    {                        // Word boundary match                        case E_NBOUND:                        case E_BOUND:                            {                                char cLast = ((idx == 0) ? '\n' : search.charAt(idx - 1));                                char cNext = ((search.isEnd(idx)) ? '\n' : search.charAt(idx));                                if ((Character.isLetterOrDigit(cLast) == Character.isLetterOrDigit(cNext)) == (opdata == E_BOUND))                                {                                    return -1;                                }                            }                            break;                        // Alpha-numeric, digit, space, javaLetter, javaLetterOrDigit                        case E_ALNUM:                        case E_NALNUM:                        case E_DIGIT:                        case E_NDIGIT:                        case E_SPACE:                        case E_NSPACE:                            // Give up if out of input                            if (search.isEnd(idx))                            {                                return -1;                            }                            char c = search.charAt(idx);                            // Switch on escape                            switch (opdata)                            {                                case E_ALNUM:                                case E_NALNUM:                                    if (!((Character.isLetterOrDigit(c) || c == '_') == (opdata == E_ALNUM)))                                    {                                        return -1;                                    }                                    break;                                case E_DIGIT:                                case E_NDIGIT:                                    if (!(Character.isDigit(c) == (opdata == E_DIGIT)))                                    {                                        return -1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本在线播放一区二区三区| 午夜影视日本亚洲欧洲精品| 日韩亚洲欧美在线观看| 豆国产96在线|亚洲| 日本伊人精品一区二区三区观看方式| 亚洲综合一区在线| 亚洲va国产va欧美va观看| 一区二区久久久| 亚洲v日本v欧美v久久精品| 亚洲一区二区三区在线| 天天亚洲美女在线视频| 免费成人小视频| 国内精品视频一区二区三区八戒| 久久99国内精品| 国产精品亚洲专一区二区三区| 国产成人精品影院| 国产·精品毛片| 色噜噜狠狠色综合中国| 欧洲国内综合视频| 欧美一区二区三区免费| 精品国产成人在线影院| 国产女同性恋一区二区| 亚洲免费高清视频在线| 一区二区三区电影在线播| 石原莉奈在线亚洲三区| 国产精品一区在线观看乱码| 波多野结衣精品在线| 欧美最猛性xxxxx直播| 成年人午夜久久久| 欧美日韩性生活| 久久久久国产成人精品亚洲午夜| 国产精品白丝在线| 午夜欧美一区二区三区在线播放| 精品午夜一区二区三区在线观看| 成人福利在线看| 欧美日韩中文字幕一区二区| 日韩片之四级片| 成人免费小视频| 日本 国产 欧美色综合| 成人午夜视频在线观看| 欧美日韩国产影片| 日本一区免费视频| 日本伊人色综合网| av一本久道久久综合久久鬼色| 555夜色666亚洲国产免| 欧美国产日本韩| 久久国内精品视频| 91视频在线观看免费| 精品欧美一区二区久久| 一区二区在线观看av| 国产一区二区三区四区五区入口| 欧美性色综合网| 中文字幕亚洲欧美在线不卡| 久久精品噜噜噜成人av农村| 欧美性受xxxx| 自拍偷在线精品自拍偷无码专区| 老司机免费视频一区二区| 色国产精品一区在线观看| 久久久亚洲精品一区二区三区| 亚洲一二三四在线观看| 成人avav影音| 国产日韩v精品一区二区| 日本成人中文字幕| 欧美日韩国产美女| 一区二区三区国产精华| gogo大胆日本视频一区| 久久久久久久av麻豆果冻| 麻豆成人综合网| 日韩一级高清毛片| 狠狠色狠狠色合久久伊人| 欧美日韩大陆一区二区| 亚洲激情第一区| 日本久久一区二区| 亚洲欧洲国产日韩| 不卡一区中文字幕| 久久精品夜夜夜夜久久| 国产自产视频一区二区三区| 精品国产乱码久久久久久闺蜜| 奇米精品一区二区三区四区| 欧美一级片免费看| 免费日韩伦理电影| 91精品国产一区二区三区| 日韩制服丝袜av| 欧美一区三区四区| 轻轻草成人在线| 2欧美一区二区三区在线观看视频| 免费看精品久久片| 日韩视频免费直播| 久久成人免费网| 久久午夜电影网| 成人成人成人在线视频| 亚洲欧洲精品一区二区精品久久久| 成人av片在线观看| 亚洲欧洲日本在线| 欧美日韩视频在线第一区 | 久久99蜜桃精品| 久久久久免费观看| bt7086福利一区国产| 亚洲乱码国产乱码精品精98午夜 | 久久精品久久久精品美女| 91精品国产黑色紧身裤美女| 麻豆91在线看| 国产精品国模大尺度视频| 日韩一区二区免费视频| 国产一区视频导航| 国产精品久久久久久久久免费丝袜 | 开心九九激情九九欧美日韩精美视频电影| 精品国产欧美一区二区| 成人伦理片在线| 日韩福利视频导航| 国产丝袜在线精品| 在线欧美日韩国产| 精品制服美女丁香| 亚洲激情在线激情| 日韩久久久精品| 91亚洲永久精品| 精品一区二区三区免费毛片爱| **性色生活片久久毛片| 欧美一区二区在线播放| 99re热这里只有精品免费视频 | 亚洲一区二区五区| 欧美大肚乱孕交hd孕妇| av电影一区二区| 久久精品国产在热久久| 亚洲欧美成aⅴ人在线观看| 欧美一区二区黄| 欧美伊人久久大香线蕉综合69 | 国产欧美精品在线观看| 欧美久久久久中文字幕| 成人午夜私人影院| 久久99精品久久久久久国产越南| 亚洲黄色免费网站| 欧美韩国日本不卡| 精品粉嫩aⅴ一区二区三区四区| 色丁香久综合在线久综合在线观看| 久久国内精品自在自线400部| 亚洲午夜免费视频| 中文字幕在线不卡一区二区三区| 欧美岛国在线观看| 欧美日本一道本在线视频| 一本大道av一区二区在线播放| 国产一区二区伦理片| 日韩精品亚洲专区| 午夜精品一区在线观看| 最新国产成人在线观看| 日本一区二区三区免费乱视频| 欧美成人女星排行榜| 欧美视频日韩视频在线观看| 色婷婷狠狠综合| 99久精品国产| 色综合天天在线| aaa亚洲精品| a在线欧美一区| www.亚洲国产| 91视频免费播放| 色综合久久久久网| 91麻豆免费观看| 97国产一区二区| 色国产精品一区在线观看| 色偷偷成人一区二区三区91| 99国产精品久久久久久久久久| 成人黄色在线视频| 91热门视频在线观看| 91丨porny丨在线| 欧美三级日韩在线| 欧美系列一区二区| 欧美疯狂做受xxxx富婆| 日韩一区二区三区免费看| 欧美一级片在线| 国产欧美日韩三级| 亚洲色大成网站www久久九九| 一区二区三区中文字幕精品精品| 伊人婷婷欧美激情| 日韩成人一区二区三区在线观看| 国内外成人在线| 白白色 亚洲乱淫| 在线观看一区二区视频| 欧美精品 日韩| 2020国产精品自拍| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 亚洲欧美一区二区三区久本道91| 亚洲成av人片在线| 国产在线精品一区二区不卡了| 成人黄色国产精品网站大全在线免费观看| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美日韩国产在线观看| xnxx国产精品| 一区二区三区蜜桃网| 蜜桃一区二区三区四区| 99精品视频中文字幕| 欧美一级爆毛片| 亚洲欧洲精品一区二区三区| 午夜视频在线观看一区二区 | 久久毛片高清国产| 亚洲另类春色国产| 国内精品久久久久影院薰衣草 | 国产精品午夜免费| 日日夜夜一区二区| 成人国产一区二区三区精品| 欧美视频完全免费看|