麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

基于正則表達(dá)式的字符串匹配方法和裝置的制作方法

文檔序號(hào):6363110閱讀:179來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):基于正則表達(dá)式的字符串匹配方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別涉及基于正則表達(dá)式的字符串匹配方法和裝置。
背景技術(shù)
正則表達(dá)式是一種正規(guī)的描述字符串模式的方法,可以用來(lái)進(jìn)行文本匹配,具體為在給定的字符串中尋找與給定的正則表達(dá)式相匹配的部分。正則表達(dá)式由普通字符和元字符組成,普通字符包括數(shù)字和大小寫(xiě)的字母,而元字符是具有特殊的含義的字符,例如, “\s”表示任何空白字符,包括空格、制表符、換頁(yè)符等,”表示除換行元字符“\n”以外的任意字符,表示前面的子表達(dá)式重復(fù)零次或多次。正則表達(dá)式可以用來(lái)進(jìn)行文本匹配,具體為在給定的字符串中尋找和匹配正則表達(dá)式相匹配的部分。正則表達(dá)式廣泛應(yīng)用在通信行業(yè)中,用于對(duì)數(shù)據(jù)流量進(jìn)行模式匹配檢查,例如進(jìn)行協(xié)議解析、病毒檢測(cè)和業(yè)務(wù)分類(lèi)等。在實(shí)際應(yīng)用中,在進(jìn)行文本匹配時(shí),需要根據(jù)不同的匹配內(nèi)容編寫(xiě)不同的字符串匹配結(jié)構(gòu),設(shè)計(jì)過(guò)程較為繁瑣,而匹配內(nèi)容的格式一旦改變,就需要重新設(shè)計(jì)字符串匹配結(jié)構(gòu),造成維護(hù)困難。由此,需要自動(dòng)根據(jù)正則表達(dá)式設(shè)計(jì)進(jìn)行字符串匹配的方法和裝置

發(fā)明內(nèi)容
本發(fā)明的目的在于提供易于維護(hù)基于正則表達(dá)式的字符串匹配方法和裝置。本發(fā)明公開(kāi)了一種基于正則表達(dá)式的字符串匹配方法,包括步驟100、解析匹配字符串,根據(jù)預(yù)先設(shè)定的段模式分隔符以及字符串格式判斷匹配字符串的匹配類(lèi)型為段模式還是行模式,根據(jù)判斷得到的匹配類(lèi)型設(shè)置匹配類(lèi)型標(biāo)識(shí);步驟200、根據(jù)匹配類(lèi)型標(biāo)識(shí)將匹配字符串按段分割或按行分割為多個(gè)子字符串, 對(duì)每個(gè)子字符串確定正則表達(dá)式生成模式,并根據(jù)正則表達(dá)式生成模式以不同的連接式連接所述子字符串中以預(yù)定詞組標(biāo)記標(biāo)識(shí)的詞組生成子字符串正則表達(dá)式,獲得包含至少一個(gè)子字符串正則表達(dá)式的正則表達(dá)式列表;步驟300、根據(jù)匹配類(lèi)型標(biāo)識(shí)對(duì)待匹配數(shù)據(jù)進(jìn)行按段分割或按行分割獲得待匹配子字符串,按子字符串正則表達(dá)式逐一地對(duì)分割得到的待匹配子字符串進(jìn)行匹配,輸出匹配結(jié)果。優(yōu)選地,匹配類(lèi)型為段模式是指所述匹配字符串的格式以所述預(yù)定的段模式分隔符為界進(jìn)行重復(fù),匹配類(lèi)型為行模式是指所述匹配字符串格式為不符合段模式的其它模式。優(yōu)選地,所述按段分割是以預(yù)定段模式分隔符為界截取子字符串,所述按行分割是以換行符為界截取子字符串。優(yōu)選地,所述正則表達(dá)式生成模式包括列模式和非列模式,對(duì)于列模式,利用代表至少一個(gè)空白字符的連接正則表達(dá)式連接詞組生成子字符串正則表達(dá)式,對(duì)于非列模式, 利用代表至少一個(gè)非換行符的任意字符的連接則正表達(dá)式生成子字符串正則表達(dá)式。
優(yōu)選地,所述步驟100包括步驟101、解析所述匹配字符串;步驟102、判斷所述匹配字符串的格式是否以預(yù)定的段模式分隔符為界進(jìn)行重復(fù), 如果是,所述匹配字符串匹配類(lèi)型為段模式,執(zhí)行步驟103,如果否,所述匹配字符串匹配類(lèi)型為行模式,執(zhí)行步驟104;步驟103、設(shè)置所述匹配字符串的匹配類(lèi)型標(biāo)識(shí)為段模式,結(jié)束步驟100流程;步驟104、設(shè)置所述匹配字符串的匹配類(lèi)型標(biāo)識(shí)為行模式,結(jié)束100流程。優(yōu)選地,所述步驟200包括步驟201、判斷所述匹配字符串的匹配類(lèi)型標(biāo)識(shí)為段模式還是行模式,如果為段模式,則執(zhí)行步驟202,如果為行模式則執(zhí)行步驟203 ;步驟202、按段模式分隔符將所述匹配字符串分割為多個(gè)匹配子字符串,執(zhí)行步驟 204 ;步驟203、按換行符將所述匹配字符串分割為多個(gè)子字符串,執(zhí)行步驟204 ;步驟204、取出一個(gè)未處理的匹配子字符串,根據(jù)預(yù)定的詞組標(biāo)記提取其中的由詞組標(biāo)記標(biāo)識(shí)的詞組和詞組間字符;步驟205、根據(jù)詞組間字符判斷所述匹配子字符串的正則表達(dá)式生成模式為列模式還是非列模式,如果是列模式,則執(zhí)行步驟206,如果是非列模式,則執(zhí)行步驟207 ;步驟206、將在步驟204中提取的詞組用表示至少一個(gè)空白字符的連接正則表達(dá)式連接為子字符串正則表達(dá)式,執(zhí)行步驟208 ;步驟207、將在步驟204中提取的詞組用表示至少一個(gè)非換行符的任意字符的連接正則表達(dá)式連接為子字符串正則表達(dá)式,執(zhí)行步驟208 ;步驟208、將得到的子字符串正則表達(dá)式加入正則表達(dá)式列表;步驟209、判斷是否還有未處理的匹配子字符串,如果有,則執(zhí)行步驟204,如果沒(méi)有,則執(zhí)行步驟210 ;步驟210、結(jié)束正則表達(dá)式生成。優(yōu)選地,所述步驟300包括步驟301、判斷所述匹配類(lèi)型標(biāo)識(shí)為段模式還是行模式,如果為段模式,則執(zhí)行步驟302,如果為行模式則執(zhí)行步驟303 ;步驟302、將待匹配數(shù)據(jù)按段分割為待匹配子字符串,執(zhí)行步驟304 ;步驟303、將待匹配數(shù)據(jù)按行分割為待匹配子字符串,執(zhí)行步驟304 ;步驟304、按順序從所述正則表達(dá)式列表中讀取一個(gè)未處理的子字符串正則表達(dá)式;步驟305、用子字符串正則表達(dá)式與待匹配子字符串進(jìn)行匹配;步驟306、判斷子字符串匹配是否成功,如果失敗執(zhí)行步驟307,如果成功執(zhí)行步驟 308 ;步驟307、輸出字符串匹配失敗,結(jié)束匹配流程;步驟308、判斷是否還有未處理的子字符串正則表達(dá)式,如果有,則執(zhí)行步驟304, 如果沒(méi)有,則執(zhí)行步驟309 ;步驟309、輸出字符串匹配成功,結(jié)束匹配流程。
本發(fā)明還公開(kāi)了一種基于正則表達(dá)式的字符串匹配裝置,包括解析模塊,用于解析匹配字符串,根據(jù)預(yù)先設(shè)定的段模式分隔符以及字符串格式判斷匹配字符串的匹配類(lèi)型為段模式還是行模式,根據(jù)判斷得到的匹配類(lèi)型設(shè)置匹配類(lèi)型標(biāo)識(shí);正則表達(dá)式生成模塊,用于根據(jù)匹配類(lèi)型標(biāo)識(shí)將匹配字符串按段分割或按行分割為多個(gè)子字符串,對(duì)每個(gè)子字符串確定正則表達(dá)式生成模式,并根據(jù)正則表達(dá)式生成模式以不同的連接式連接所述子字符串中以預(yù)定詞組標(biāo)記標(biāo)識(shí)的詞組生成子字符串正則表達(dá)式,獲得包含至少一個(gè)子字符串正則表達(dá)式的正則表達(dá)式列表;數(shù)據(jù)匹配模塊,用于根據(jù)匹配類(lèi)型標(biāo)識(shí)對(duì)待匹配數(shù)據(jù)進(jìn)行按段分割或按行分割獲得待匹配子字符串,按子字符串正則表達(dá)式逐一地對(duì)分割得到的待匹配子字符串進(jìn)行匹配,輸出匹配結(jié)果。本發(fā)明通過(guò)不同匹配模式來(lái)覆蓋所有的字符串匹配形式,通過(guò)設(shè)置正則表達(dá)式生成模式從而簡(jiǎn)化了字符串匹配結(jié)構(gòu)體的設(shè)計(jì)過(guò)程。使匹配高效,設(shè)計(jì)簡(jiǎn)單,維護(hù)方便。


圖I是本發(fā)明的基于正則表達(dá)式的字符串匹配方法的流程圖;圖2是本發(fā)明的基于正則表達(dá)式的字符串匹配方法的解析子過(guò)程的流程圖;圖3是本發(fā)明的基于正則表達(dá)式的字符串匹配方法的正則表達(dá)式生成子過(guò)程的流程圖;圖4是本發(fā)明的基于正則表達(dá)式的字符串匹配方法的數(shù)據(jù)匹配子過(guò)程的流程圖;圖5是本發(fā)明的基于正則表達(dá)式的字符串匹配裝置的框圖。
具體實(shí)施例方式下面結(jié)合附圖并通過(guò)具體實(shí)施方式
來(lái)進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案。本發(fā)明實(shí)施例根據(jù)匹配字符串的排列方式特點(diǎn),對(duì)匹配字符串類(lèi)型進(jìn)行分配,根據(jù)不同類(lèi)型進(jìn)行不同的正則表達(dá)式生成和字符串匹配操作,從而實(shí)現(xiàn)簡(jiǎn)化字符串匹配結(jié)構(gòu)的設(shè)計(jì)過(guò)程的目的。其中,本發(fā)明實(shí)施例根據(jù)匹配字符串的分隔特點(diǎn),將匹配字符串的匹配模式分為行模式和段模式。其中,匹配模式為段模式的匹配字符串中被匹配內(nèi)容是按照某種固定格式重復(fù)出現(xiàn)的,即在整個(gè)字符串中字符組合以相同格式重復(fù)出現(xiàn)(以特定字符/字符串分隔重復(fù),例如,字符串“123**234**789#”中,內(nèi)容以為分隔符每三個(gè)字符重復(fù)出現(xiàn))。 不具備段模式特點(diǎn)的字符串(即字符串內(nèi)容不按照特定格式重復(fù))被分類(lèi)為行模式的字符串。在一個(gè)優(yōu)選實(shí)施例中,匹配模式為行模式的字符串可以根據(jù)是否存在換行符進(jìn)一步分為單行模式和多行模式,單行模式的匹配字符串在匹配字符串內(nèi)沒(méi)有換行符,匹配字符串只在同一行中出現(xiàn),而多行模式的匹配字符串內(nèi)存在至少一個(gè)換行符,匹配字符串在多行中出現(xiàn)。本發(fā)明按照不同的模式來(lái)對(duì)匹配字符串進(jìn)行分割和匹配。同時(shí),本發(fā)明實(shí)施例在根據(jù)匹配字符串生成正則表達(dá)式時(shí),還根據(jù)字符串中詞組的特點(diǎn),將匹配字符串分為列模式和非列模式。此處所述的詞組是字符串中利用詞組標(biāo)記標(biāo)示的字符組合,例如字符串“$catch$ $it$”,利用“$”作為詞組標(biāo)記標(biāo)示了兩個(gè)詞組“catch”和“it”,通過(guò)這種方式可以在解析時(shí)識(shí)別字符串中的哪些字符組合是詞組。在列模式中,匹配字符串的詞組之間僅使用至少一個(gè)空白字符(包括空格、制表符等)連接,即匹配字符串的詞組在邏輯上是緊密相連的,在相鄰詞組之間不存在其他字符,例如上述的 “$(^化1!$$^$”就是列模式的字符串。而在非列模式中,匹配字符串的詞組之間包括除空白字符外的其它字符,例如“$catched$,$it$”。圖I示出了本發(fā)明的基于正則表達(dá)式的字符串匹配方法的流程圖。其具體流程如下步驟100、解析匹配字符串,根據(jù)預(yù)先設(shè)定的段模式分隔符以及字符串格式判斷匹配字符串的匹配類(lèi)型為段模式還是行模式,根據(jù)判斷得到的匹配類(lèi)型為匹配字符串設(shè)置代表其匹配類(lèi)型的標(biāo)識(shí),即匹配類(lèi)型標(biāo)識(shí)。步驟200、按匹配類(lèi)型標(biāo)識(shí)將匹配字符串劃分為多個(gè)子字符串組成的字符串列表, 對(duì)每個(gè)子字符串確定正則表達(dá)式生成模式,并根據(jù)正則表達(dá)式生成模生成子字符串匹配正則表達(dá)式。其中,對(duì)于段模式的匹配字符串,將該匹配字符串按分隔符進(jìn)行分割,對(duì)于行模式的匹配字符串,將該匹配字符串按換行符進(jìn)行分割。分割后,對(duì)于每一個(gè)子字符串,按預(yù)先設(shè)定的詞組標(biāo)記解析該子字符串,獲得子字符串中的詞組以及詞組之間的字符,根據(jù)所述詞組之間的字符判斷該子字符串的正則表達(dá)式生成類(lèi)型是列模式還是非列模式,對(duì)于列模式的子字符串,在提取得到的詞組之間用“\s*”元符號(hào)連接形成子字符串正則表達(dá)式,對(duì)于非列模式的子字符串,在提取得到的詞組之間用* ”元符號(hào)連接形成子字符串正則表達(dá)式,最后將各子字符串正則表達(dá)式合并為子字符串正則表達(dá)式列表,并將所屬匹配類(lèi)型標(biāo)識(shí)設(shè)置到所述正則表達(dá)式列表。步驟300、進(jìn)行數(shù)據(jù)匹配,獲取正則表達(dá)式列表的匹配類(lèi)型標(biāo)識(shí),根據(jù)匹配類(lèi)型對(duì)待匹配數(shù)據(jù)進(jìn)行劃分,即,如果用于進(jìn)行匹配的正則表達(dá)式列表為段模式,則按預(yù)定分隔符對(duì)待匹配數(shù)據(jù)進(jìn)行分割(分隔符之間的部分或字符串開(kāi)始/結(jié)束與分隔符之間的部分劃分為一個(gè)子字符串)如果用于進(jìn)行匹配的正則表達(dá)式列表為行模式,則按換行符對(duì)待匹配數(shù)據(jù)進(jìn)行分割(換行符之間或字符串開(kāi)始/結(jié)束與換行符之間的部分劃分為一個(gè)子字符串)。 分割后,按子字符串正則表達(dá)式逐一地對(duì)分隔得到的待匹配子字符串進(jìn)行匹配。圖2是進(jìn)一步說(shuō)明所述步驟100的具體流程的方法流程圖。如圖2所示,所述步驟100包括步驟101、解析所述匹配字符串;步驟102、判斷所述匹配字符串的格式是否以預(yù)定的段模式分隔符為界進(jìn)行重復(fù), 如果是,所述匹配字符串匹配類(lèi)型為段模式,執(zhí)行步驟103,如果否,所述匹配字符串匹配類(lèi)型為行模式,執(zhí)行步驟104;步驟103、設(shè)置所述匹配字符串的匹配類(lèi)型標(biāo)識(shí)為段模式,結(jié)束;步驟104、設(shè)置所述匹配字符串的匹配類(lèi)型標(biāo)識(shí)為行模式,結(jié)束。圖3是進(jìn)一步說(shuō)明所述步驟200的具體流程的方法流程圖。如圖3所示,所述步驟200包括步驟201、判斷所述匹配字符串的匹配類(lèi)型標(biāo)識(shí)為段模式還是行模式,如果為段模式,則執(zhí)行步驟202,如果為行模式則執(zhí)行步驟203 ;步驟202、按段模式分隔符將所述匹配字符串分割為多個(gè)匹配子字符串,即將以段模式分隔符為界重復(fù)的部分提取為子字符串,執(zhí)行步驟204 ;步驟203、按換行符將所述匹配字符串分割為多個(gè)子字符串,即將字符串中的每一行提取為子字符串,執(zhí)行步驟204 ;步驟204、取出一個(gè)匹配子字符串,根據(jù)預(yù)定的詞組標(biāo)記提取其中的由詞組標(biāo)記標(biāo)識(shí)的詞組和詞組間字符;步驟205、根據(jù)詞組間字符判斷所述匹配子字符串的正則表達(dá)式生成模式為列模式還是非列模式,如果是列模式,則執(zhí)行步驟206,如果是非列模式,則執(zhí)行步驟207 ;步驟206、將在步驟204中提取的詞組用表示至少一個(gè)空白字符的正則表達(dá)式 “\s*”連接為子字符串正則表達(dá)式,執(zhí)行步驟208 ;步驟207、將在步驟204中提取的詞組用表示至少一個(gè)非換行符的任意字符的正則表達(dá)式* ”連接為子字符串正則表達(dá)式,執(zhí)行步驟208 ;步驟208、將得到的子字符串正則表達(dá)式加入正則表達(dá)式列表;步驟209、判斷是否還有未處理的匹配子字符串,如果有,則執(zhí)行步驟204,如果沒(méi)有,則執(zhí)行步驟210 ;步驟210、結(jié)束正則表達(dá)式生成。圖4是進(jìn)一步說(shuō)明所述步驟300基于正則表達(dá)式進(jìn)行字符串匹配的具體流程的方法流程圖。如圖4所示,所述步驟300包括步驟301、判斷所述正則表達(dá)式列表的匹配類(lèi)型標(biāo)識(shí)為段模式還是行模式,如果為段模式,則執(zhí)行步驟302,如果為行模式則執(zhí)行步驟303 ;
式; 驟308
步驟302、將待匹配數(shù)據(jù)按段分割為待匹配子字符串,執(zhí)行步驟304 ;
步驟303、將待匹配數(shù)據(jù)按行分割為待匹配子字符串,執(zhí)行步驟304 ;
步驟304、按順序從所述正則表達(dá)式列表中讀取一個(gè)未處理的子字符串正則表達(dá)
步驟305、用子字符串正則表達(dá)式與待匹配子字符串進(jìn)行匹配;
步驟306、判斷子字符串匹配是否成功,如果失敗執(zhí)行步驟307,如果成功執(zhí)行步
步驟307、輸出字符串匹配失敗,結(jié)束匹配流程;
步驟308、判斷是否還有未處理的子字符串正則表達(dá)式,如果有,則執(zhí)行步驟304, 如果沒(méi)有,則執(zhí)行步驟309 ;步驟309、輸出字符串匹配成功,結(jié)束匹配流程。本發(fā)明通過(guò)不同匹配模式來(lái)覆蓋所有的字符串匹配形式,通過(guò)設(shè)置正則表達(dá)式生成模式從而簡(jiǎn)化了字符串匹配結(jié)構(gòu)體的設(shè)計(jì)過(guò)程。使匹配高效,設(shè)計(jì)簡(jiǎn)單,維護(hù)方便。在本發(fā)明的另一個(gè)優(yōu)選實(shí)施例中,可以對(duì)行模式進(jìn)行進(jìn)一步細(xì)分,將行模式分為單行模式和多行模式單行模式的匹配字符串在匹配字符串內(nèi)沒(méi)有換行符,匹配字符串只在同一行中出現(xiàn),而多行模式的匹配字符串內(nèi)存在至少一個(gè)換行符,匹配字符串在多行中出現(xiàn)。也就是說(shuō),將匹配類(lèi)型分為三種類(lèi)型,即段模式、單行模式和多行模式。在步驟200中分割所述匹配字符串時(shí),對(duì)于單行模式的字符串不必進(jìn)行分割,而對(duì)于多行模式的字符串按行進(jìn)行分割獲得多個(gè)匹配子字符串。在步驟300中對(duì)待匹配數(shù)據(jù)進(jìn)行分割時(shí),如果匹配正則表達(dá)式的匹配模式為單行模式,則對(duì)于待匹配數(shù)據(jù)不進(jìn)行分割,如果匹配模式為多行模式,則將待匹配數(shù)據(jù)按行進(jìn)行分割。在本發(fā)明的又一個(gè)優(yōu)選實(shí)施例中,在步驟305進(jìn)行匹配時(shí),逐字符進(jìn)行匹配,直到整個(gè)子字符串匹配完成。圖5是本發(fā)明的另一優(yōu)選實(shí)施例的基于正則表達(dá)式的字符串匹配裝置,所述裝置包括解析模塊,用于解析匹配字符串,根據(jù)預(yù)先設(shè)定的段模式分隔符以及字符串格式判斷匹配字符串的匹配類(lèi)型為段模式還是行模式,根據(jù)判斷得到的匹配類(lèi)型為匹配字符串設(shè)置代表其匹配類(lèi)型的標(biāo)識(shí),即匹配類(lèi)型標(biāo)識(shí)。正則表達(dá)式生成模塊,用于按匹配類(lèi)型標(biāo)識(shí)將匹配字符串劃分為多個(gè)子字符串組成的字符串列表,對(duì)每個(gè)子字符串確定正則表達(dá)式生成模式,并根據(jù)正則表達(dá)式生成模生成子字符串匹配正則表達(dá)式。其中,對(duì)于段模式的匹配字符串,將該匹配字符串按分隔符進(jìn)行分割,對(duì)于行模式的匹配字符串,將該匹配字符串按換行符進(jìn)行分割。分割后,對(duì)于每一個(gè)子字符串,按預(yù)先設(shè)定的詞組標(biāo)記解析該子字符串,獲得子字符串中的詞組以及詞組之間的字符,根據(jù)所述詞組之間的字符判斷該子字符串的正則表達(dá)式生成類(lèi)型是列模式還是非列模式,對(duì)于列模式的子字符串,在提取得到的詞組之間用“\s*”元符號(hào)連接形成子字符串正則表達(dá)式,對(duì)于非列模式的子字符串,在提取得到的詞組之間用“.* ”元符號(hào)連接形成子字符串正則表達(dá)式,最后將各子字符串正則表達(dá)式合并為子字符串正則表達(dá)式列表, 并將所屬匹配類(lèi)型標(biāo)識(shí)設(shè)置到所述正則表達(dá)式列表。數(shù)據(jù)匹配模塊,用于進(jìn)行數(shù)據(jù)匹配,獲取正則表達(dá)式列表的匹配類(lèi)型標(biāo)識(shí),根據(jù)匹配類(lèi)型對(duì)待匹配數(shù)據(jù)進(jìn)行劃分,即,如果用于進(jìn)行匹配的正則表達(dá)式列表為段模式,則按預(yù)定分隔符對(duì)待匹配數(shù)據(jù)進(jìn)行分割(分隔符之間的部分或字符串開(kāi)始/結(jié)束與分隔符之間的部分劃分為一個(gè)子字符串)如果用于進(jìn)行匹配的正則表達(dá)式列表為行模式,則按換行符對(duì)待匹配數(shù)據(jù)進(jìn)行分割(換行符之間或字符串開(kāi)始/結(jié)束與換行符之間的部分劃分為一個(gè)子字符串)。分割后,按子字符串正則表達(dá)式逐一地對(duì)分割得到的待匹配子字符串進(jìn)行匹配。上述僅為本發(fā)明的較佳實(shí)施例及所運(yùn)用技術(shù)原理,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種基于正則表達(dá)式的字符串匹配方法,包括步驟100、解析匹配字符串,根據(jù)預(yù)先設(shè)定的段模式分隔符以及字符串格式判斷匹配字符串的匹配類(lèi)型為段模式還是行模式,根據(jù)判斷得到的匹配類(lèi)型設(shè)置匹配類(lèi)型標(biāo)識(shí);步驟200、根據(jù)匹配類(lèi)型標(biāo)識(shí)將匹配字符串按段分割或按行分割為多個(gè)子字符串,對(duì)每個(gè)子字符串確定正則表達(dá)式生成模式,并根據(jù)正則表達(dá)式生成模式以不同的連接式連接所述子字符串中以預(yù)定詞組標(biāo)記標(biāo)識(shí)的詞組生成子字符串正則表達(dá)式,獲得包含至少一個(gè)子字符串正則表達(dá)式的正則表達(dá)式列表;步驟300、根據(jù)匹配類(lèi)型標(biāo)識(shí)對(duì)待匹配數(shù)據(jù)進(jìn)行按段分割或按行分割獲得待匹配子字符串,按子字符串正則表達(dá)式逐一地對(duì)分割得到的待匹配子字符串進(jìn)行匹配,輸出匹配結(jié)果。
2.如權(quán)利要求I所述的基于正則表達(dá)式的字符串匹配方法,其特征在于匹配類(lèi)型為段模式是指所述匹配字符串的格式以所述預(yù)定的段模式分隔符為界進(jìn)行重復(fù),匹配類(lèi)型為行模式是指所述匹配字符串格式為不符合段模式的其它模式。
3.如權(quán)利要求I所述的基于正則表達(dá)式的字符串匹配方法,其特征在于所述按段分割是以預(yù)定段模式分隔符為界截取子字符串,所述按行分割是以換行符為界截取子字符串。
4.如權(quán)利要求I所述的基于正則表達(dá)式的字符串匹配方法,其特征在于所述正則表達(dá)式生成模式包括列模式和非列模式,對(duì)于列模式,利用代表至少一個(gè)空白字符的連接正則表達(dá)式連接詞組生成子字符串正則表達(dá)式,對(duì)于非列模式,利用代表至少一個(gè)非換行符的任意字符的連接則正表達(dá)式生成子字符串正則表達(dá)式。
5.如權(quán)利要求I所述的基于正則表達(dá)式的字符串匹配方法,其特征在于,所述步驟100 包括步驟101、解析所述匹配字符串;步驟102、判斷所述匹配字符串的格式是否以預(yù)定的段模式分隔符為界進(jìn)行重復(fù),如果是,所述匹配字符串匹配類(lèi)型為段模式,執(zhí)行步驟103,如果否,所述匹配字符串匹配類(lèi)型為行模式,執(zhí)行步驟104;步驟103、設(shè)置所述匹配字符串的匹配類(lèi)型標(biāo)識(shí)為段模式,結(jié)束步驟100流程;步驟104、設(shè)置所述匹配字符串的匹配類(lèi)型標(biāo)識(shí)為行模式,結(jié)束100流程。
6.如權(quán)利要求I所述的基于正則表達(dá)式的字符串匹配方法,其特征在于,所述步驟200 包括步驟201、判斷所述匹配字符串的匹配類(lèi)型標(biāo)識(shí)為段模式還是行模式,如果為段模式, 則執(zhí)行步驟202,如果為行模式則執(zhí)行步驟203 ;步驟202、按段模式分隔符將所述匹配字符串分割為多個(gè)匹配子字符串,執(zhí)行步驟204 ;步驟203、按換行符將所述匹配字符串分割為多個(gè)子字符串,執(zhí)行步驟204 ;步驟204、取出一個(gè)未處理的匹配子字符串,根據(jù)預(yù)定的詞組標(biāo)記提取其中的由詞組標(biāo)記標(biāo)識(shí)的詞組和詞組間字符;步驟205、根據(jù)詞組間字符判斷所述匹配子字符串的正則表達(dá)式生成模式為列模式還是非列模式,如果是列模式,則執(zhí)行步驟206,如果是非列模式,則執(zhí)行步驟207 ;步驟206、將在步驟204中提取的詞組用表示至少一個(gè)空白字符的連接正則表達(dá)式連接為子字符串正則表達(dá)式,執(zhí)行步驟208 ;步驟207、將在步驟204中提取的詞組用表示至少一個(gè)非換行符的任意字符的連接正則表達(dá)式連接為子字符串正則表達(dá)式,執(zhí)行步驟208 ;步驟208、將得到的子字符串正則表達(dá)式加入正則表達(dá)式列表;步驟209、判斷是否還有未處理的匹配子字符串,如果有,則執(zhí)行步驟204,如果沒(méi)有, 則執(zhí)行步驟210 ;步驟210、結(jié)束正則表達(dá)式生成。
7.如權(quán)利要求I所述的基于正則表達(dá)式的字符串匹配方法,其特征在于,所述步驟300 包括步驟301、判斷所述匹配類(lèi)型標(biāo)識(shí)為段模式還是行模式,如果為段模式,則執(zhí)行步驟 302,如果為行模式則執(zhí)行步驟303 ;步驟302、將待匹配數(shù)據(jù)按段分割為待匹配子字符串,執(zhí)行步驟304 ;步驟303、將待匹配數(shù)據(jù)按行分割為待匹配子字符串,執(zhí)行步驟304 ;步驟304、按順序從所述正則表達(dá)式列表中讀取一個(gè)未處理的子字符串正則表達(dá)式; 步驟305、用子字符串正則表達(dá)式與待匹配子字符串進(jìn)行匹配;步驟306、判斷子字符串匹配是否成功,如果失敗執(zhí)行步驟307,如果成功執(zhí)行步驟308 ;步驟307、輸出字符串匹配失敗,結(jié)束匹配流程;步驟308、判斷是否還有未處理的子字符串正則表達(dá)式,如果有,則執(zhí)行步驟304,如果沒(méi)有,則執(zhí)行步驟309 ;步驟309、輸出字符串匹配成功,結(jié)束匹配流程。
8.一種基于正則表達(dá)式的字符串匹配裝置,包括解析模塊,用于解析匹配字符串,根據(jù)預(yù)先設(shè)定的段模式分隔符以及字符串格式判斷匹配字符串的匹配類(lèi)型為段模式還是行模式,根據(jù)判斷得到的匹配類(lèi)型設(shè)置匹配類(lèi)型標(biāo)正則表達(dá)式生成模塊,用于根據(jù)匹配類(lèi)型標(biāo)識(shí)將匹配字符串按段分割或按行分割為多個(gè)子字符串,對(duì)每個(gè)子字符串確定正則表達(dá)式生成模式,并根據(jù)正則表達(dá)式生成模式以不同的連接式連接所述子字符串中以預(yù)定詞組標(biāo)記標(biāo)識(shí)的詞組生成子字符串正則表達(dá)式,獲得包含至少一個(gè)子字符串正則表達(dá)式的正則表達(dá)式列表;數(shù)據(jù)匹配模塊,用于根據(jù)匹配類(lèi)型標(biāo)識(shí)對(duì)待匹配數(shù)據(jù)進(jìn)行按段分割或按行分割獲得待匹配子字符串,按子字符串正則表達(dá)式逐一地對(duì)分割得到的待匹配子字符串進(jìn)行匹配,輸出匹配結(jié)果。
全文摘要
本發(fā)明公開(kāi)了一種基于正則表達(dá)式的字符串匹配方法,包括步驟100、根據(jù)字符串格式判斷匹配字符串的匹配類(lèi)型為段模式還是行模式,設(shè)置匹配類(lèi)型標(biāo)識(shí);步驟200、根據(jù)匹配類(lèi)型標(biāo)識(shí)將匹配字符串按段分割或按行分割為多個(gè)子字符串,對(duì)每個(gè)子字符串確定正則表達(dá)式生成模式,并根據(jù)正則表達(dá)式生成模式以不同的連接正則表達(dá)式連接詞組生成子字符串正則表達(dá)式,獲得包含至少一個(gè)子字符串正則表達(dá)式的正則表達(dá)式列表;步驟300、根據(jù)匹配類(lèi)型標(biāo)識(shí)對(duì)待匹配數(shù)據(jù)進(jìn)行按段分割或按行分割獲得待匹配子字符串,按子字符串正則表達(dá)式逐一地對(duì)分割得到的待匹配子字符串進(jìn)行匹配,輸出匹配結(jié)果。
文檔編號(hào)G06F17/30GK102609459SQ20121000927
公開(kāi)日2012年7月25日 申請(qǐng)日期2012年1月12日 優(yōu)先權(quán)日2012年1月12日
發(fā)明者劉磊 申請(qǐng)人:神州數(shù)碼網(wǎng)絡(luò)(北京)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
主站蜘蛛池模板: 延寿县| 元朗区| 大埔县| 石台县| 英吉沙县| 灵山县| 伊金霍洛旗| 莫力| 日照市| 托里县| 建德市| 都江堰市| 东港市| 垫江县| 宝清县| 潮安县| 噶尔县| 五原县| 旬邑县| 元江| 赞皇县| 库伦旗| 台安县| 金山区| 沽源县| 磐石市| 鹰潭市| 星子县| 正阳县| 蓝山县| 海丰县| 胶南市| 上蔡县| 桐柏县| 平阴县| 盘山县| 新宾| 洱源县| 乌鲁木齐市| 塔城市| 韩城市|