<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    lyyb2001

    只是為方便自己找記錄而已
    posts - 57, comments - 27, trackbacks - 0, articles - 5
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理

    正則表達(dá)式匹配字符串

    Posted on 2015-03-20 09:41 skycity 閱讀(228) 評(píng)論(0)  編輯  收藏 所屬分類: J2SE技術(shù)
    有這樣一個(gè)串
    Read([SQLServer#10.5.219.21#mas_db],[select * from material where machine_seq='!dbo.repair.machine_seq' and b='@@dbo.test.cc' and c='!!dbo.test.dd' and d='@dbo.repair' and e='sd.bf' and f='@aa.bg' and g='#dbo.repair.machine_name' and h=@dbo.repair.owner],[en_US])
    需要解析中間的select * from material where machine_seq='!dbo.repair.machine_seq' and b='@@dbo.test.cc' and c='!!dbo.test.dd' and d='@dbo.repair' and e='sd.bf' and f='@aa.bg' and g='#dbo.repair.machine_name' and h=@dbo.repair.owner
    還需要滿足'@@','@','!'(前后包含單引號(hào)),的變量取出來
    @schema.table.fieldName     @dbo.repair.machine_seq要點(diǎn):獲取界面上某個(gè)控件錄入的值;
    #schema.table     #dbo.reapir要點(diǎn):獲取這個(gè)表的記錄行數(shù);
    !schema.table.fieldName   !dbo.repair.qty要點(diǎn):統(tǒng)計(jì)dbo.repair表qty總和. 相當(dāng)于Sum(qty)性質(zhì).
    @@constName   @@User_ID要點(diǎn):獲取內(nèi)存變量值;

    實(shí)現(xiàn)如下:
    package com.lenovo.nabf.util;

    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class NabfUtilTest {
        public static final Pattern PatternSql = Pattern.compile("\\'(([#!]{1}|[@]{1,2})[\\w\\.]+?)\\'"); // match '@dbo.repair.machine_seq'
        public static final Pattern PatternReadString = Pattern.compile(".+?,\\[([\\w\\.\\s{*!@#=\'}]+?)\\],.+?");  //match Read([db],[sqlstring],[lang])得到sqlstring的值
        public static void main(String args[]){
             String readString="Read([SQLServer#10.5.219.21#mas_db],[select * from material where "
                + "machine_seq='!dbo.repair.machine_seq' and b='@@dbo.test.cc' "
                + "and c='!!dbo.test.dd' and d='@dbo.repair' and e='sd.bf' and f='@aa.bg' "
                + "and g='#dbo.repair.machine_name' and h=@dbo.repair.owner],[en_US])"; 
            System.out.println(readString);
            System.out.println(analysisReadStr(readString));
            List list=NabfUtil.getRegexMatchedList(readString);
            for(String s:list){
                 System.out.println(s);
            }
            String sqlString = NabfUtil.getStringByAnalysisReadString(readString);
            System.out.println(sqlString);
        } 
        public static ArrayList getRegexMatchedList(String readString){
            String sqlString = analysisReadStr(readString);
            ArrayList matchList=new ArrayList();
            Matcher matcher = PatternSql.matcher(sqlString);
            int lastEndIndex = 0;
            while (matcher.find(lastEndIndex)) {
                matchList.add(matcher.group(1));
                lastEndIndex = matcher.end();
            }
            return matchList;
        }
        public static String getStringByAnalysisReadString(String readString){
            String sqlString = analysisReadStr(readString);
            Matcher matcher = PatternSql.matcher(sqlString);
            StringBuilder sb = new StringBuilder();
            int lastEndIndex = 0;
            while (matcher.find(lastEndIndex)) {
                sb.append(sqlString.substring(lastEndIndex, matcher.start()));
                lastEndIndex = matcher.end();
            }
            sb.append(sqlString.substring(lastEndIndex));
            return sb.toString();
        }
        private static String analysisReadStr(String readString){
            Matcher matcher = PatternReadString.matcher(readString);
            int lastEndIndex = 0;
            String sqlString="";
            while (matcher.find(lastEndIndex)) {
                     sqlString=matcher.group(1);
                     lastEndIndex = matcher.end();
            }
            return sqlString;
       }
    }



    Lyyb2001
    主站蜘蛛池模板: 国产vA免费精品高清在线观看| yy6080亚洲一级理论| 亚洲av一综合av一区| 高清永久免费观看| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 亚洲六月丁香六月婷婷色伊人 | 你懂的网址免费国产| 中文亚洲AV片在线观看不卡| 一级日本高清视频免费观看| 亚洲va中文字幕无码| 又大又硬又粗又黄的视频免费看 | 一个人免费高清在线观看| 亚洲国产日韩在线成人蜜芽| 亚洲无砖砖区免费| 77777亚洲午夜久久多喷| 日韩毛片无码永久免费看| 精品亚洲成a人在线观看| 亚洲日本中文字幕一区二区三区| 一级毛片完整版免费播放一区| 4338×亚洲全国最大色成网站| 91视频精品全国免费观看| 日韩亚洲Av人人夜夜澡人人爽 | 在线观看免费av网站| 亚洲中文字幕久久精品无码2021| 成年女人免费视频播放77777| 亚洲av永久无码| 伊人久久大香线蕉亚洲五月天| 色欲A∨无码蜜臀AV免费播| 亚洲另类春色校园小说| 国产一区二区免费在线| 国偷自产一区二区免费视频| 亚洲一区在线免费观看| 免费一级黄色毛片| 亚洲欧洲免费视频| 国产精品亚洲一区二区在线观看| 亚洲精品自产拍在线观看| 在线观看特色大片免费视频| 日本黄页网址在线看免费不卡| 老司机亚洲精品影院| 日本黄页网站免费| 日本一卡精品视频免费|