精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java處理字符串搜索嵌套結構的方法

開發 后端
在用java分析HTML文本時,如果要取出有嵌套結構的節點之間的內容,不能直接用正則表達式來處理,因為java所帶的正則表達式不支持嵌套結構的描述,雖然Perl、.Net、PHP可以支持。

在用Java分析HTML文本時,如果要取出有嵌套結構的節點之間的內容,不能直接用正則表達式來處理,因為Java所帶的正則表達式不支持嵌套結構的描述,雖然Perl、.Net、PHP可以支持。這時可以先用正則表達式找出節點在字符串中的位置,然后對節點進行匹配處理,取出匹配節點之間的內容,實現對嵌套結構的處理。

例如要從

  1. <pre name="code" class="java">data=<div><div>abcd<div></div><form>
  2. <input type='button' value='submit'/></form></div></div><div>1234</div> 

中取出<div></div>之間的內容,希望返回兩個字符串

  1. <pre name="code" class="java"><div>abcd<div></div><form>
  2. <input type='button' value='submit'/></form></div><pre name="code" class="html">和1234。 

源代碼如下:

為了記錄節點在字符串中的值和位置,先定義一個類,保存這些信息:

  1. public class Tag {  
  2.       
  3.     public Tag(String value, int beginPos, int endPos) {  
  4.         super();  
  5.         this.value = value;  
  6.         this.beginPos = beginPos;  
  7.         this.endPos = endPos;  
  8.     }  
  9.     private String value;  
  10.     private int beginPos;  
  11.     private int endPos;  
  12.     public String getValue() {  
  13.         return value;  
  14.     }  
  15.     public void setValue(String value) {  
  16.         this.value = value;  
  17.     }  
  18.     public int getBeginPos() {  
  19.         return beginPos;  
  20.     }  
  21.     public void setBeginPos(int beginPos) {  
  22.         this.beginPos = beginPos;  
  23.     }  
  24.     public int getEndPos() {  
  25.         return endPos;  
  26.     }  
  27.     public void setEndPos(int endPos) {  
  28.         this.endPos = endPos;  
  29.     }  
  30.       

從字符串中獲取節點之間內容的函數如下:

  1.        /**  
  2.  * 獲取字符串之間的內容,如果包含嵌套,則返回最外層嵌套內容  
  3.  *   
  4.  * @param data        
  5.  * @param stag      起始節點串  
  6.  * @param etag      結束節點串  
  7.  * @return  
  8.  */ 
  9. public List<String> get(String data,String stag, String etag){  
  10.     // 存放起始節點,用于和結束節點匹配  
  11.     Stack<Tag> work = new Stack<Tag>();  
  12.     // 保存所有起始和結束節點  
  13.     List<Tag> allTags = new ArrayList<Tag>();  
  14.       
  15.     // 在元字符前加轉義符  
  16.     String nstag = stag.replaceAll("([\\*\\.\\+\\(\\]\\[\\?\\{\\}\\^\\$\\|\\\\])""\\\\$1");  
  17.     String netag = etag.replaceAll("([\\*\\.\\+\\(\\]\\[\\?\\{\\}\\^\\$\\|\\\\])""\\\\$1");  
  18.       
  19.     String reg = "((?:"+nstag+")|(?:"+netag+"))";  
  20.       
  21.     Pattern p = Pattern.compile(reg, Pattern.CASE_INSENSITIVE|Pattern.MULTILINE);  
  22.       
  23.     Matcher m = p.matcher(data);  
  24.       
  25.     while(m.find()){  
  26.         Tag tag = new Tag(m.group(0),m.start(),m.end());  
  27.         allTags.add(tag);  
  28.     }  
  29.     // 保存開始結束節點之間的內容,不含節點  
  30.     List<String> result = new ArrayList<String>();  
  31.       
  32.     for(Tag t : allTags){  
  33.         if (stag.equalsIgnoreCase(t.getValue())){  
  34.             work.push(t);  
  35.         }else if(etag.equalsIgnoreCase(t.getValue())){  
  36.             // 如果棧已空,則表示不匹配  
  37.             if (work.empty()){  
  38.                 throw new RuntimeException("pos "+t.getBeginPos()+" tag not match start tag.");  
  39.             }  
  40.             Tag otag = work.pop();  
  41.             // 如果棧為空,則匹配  
  42.             if (work.empty()){  
  43.                 String sub = data.substring(otag.getEndPos(), t.getBeginPos());  
  44.                 result.add(sub);  
  45.             }  
  46.         }  
  47.           
  48.     }  
  49.       
  50.     // 如果此時棧不空,則有不匹配發生  
  51.     if (!work.empty()){  
  52.         Tag t = work.pop();  
  53.         throw new RuntimeException("tag "+t.getValue()+ "not match.");  
  54.     }  
  55.       
  56.     return result;  
  57.       

函數返回節點之間內容串組成的列表。

例如 調用 get(data,"<div>", "</div>") 返回含有兩個元素的列表,元素分別為

  1. <div>abcd<div></div><form><input type='button' value='>'/></form></div>, 1234 

需要注意的是如果節點含有正則表達式的元字符,需要在元字符前加轉義符\\,源代碼中第16,17行實現此功能。

原文鏈接:http://blog.csdn.net/indexchen/article/details/7236754

【編輯推薦】

  1. Java編程:常見問題匯總
  2. Java迷題:等于,還是不等于?
  3. Java數據庫連接代碼集合
  4. Java編程語言的認識誤區
  5. Java Thread的概述與總結
責任編輯:林師授 來源: indexchen的博客
相關推薦

2009-11-26 16:26:32

PHP字符串mbstr

2010-11-26 09:51:54

MySQL字符串

2011-07-12 16:14:17

2010-06-04 14:59:06

MySQL數據庫

2010-06-21 09:48:43

2009-08-07 14:22:56

C#字符串搜索

2009-06-30 14:16:37

截取字符串

2021-05-18 09:08:18

字符串子串對象

2025-06-30 02:11:00

2022-09-26 00:00:02

字符串數據結構

2010-08-04 11:23:15

Flex字符串

2010-04-27 12:26:21

Unix字符串

2020-09-03 10:13:49

JavaScript字符串pad

2010-07-14 16:35:52

Perl字符串處理函數

2023-10-18 07:55:41

Python字符串

2020-05-12 08:53:15

JavaScript字符串處理庫

2019-08-12 14:25:09

編程算法PythonJavaScript

2021-08-26 11:41:50

字符串String.jsVoca

2010-11-26 11:20:31

MySQL字符串處理函

2021-03-08 08:23:24

Java字符串截取
點贊
收藏

51CTO技術棧公眾號

亚洲精品123区| 国产成人福利夜色影视| 99视频有精品| 国产成人激情视频| 亚洲色偷偷综合亚洲av伊人| 久久久久毛片免费观看| 婷婷中文字幕综合| 一区二区视频在线播放| 亚洲精品视频专区| 日本91福利区| 久久久女女女女999久久| www.自拍偷拍| 日本在线视频一区二区三区| 欧美日韩亚洲视频一区| 异国色恋浪漫潭| 日韩二区三区| 国产精品99久久久久久久女警 | 国产原创精品视频| av亚洲精华国产精华| 国产欧美一区二区三区四区| 日产欧产va高清| 久久精品国产www456c0m| 亚洲国产精品福利| 九九九九九九九九| 91看片一区| 岛国av在线不卡| 国产a级黄色大片| av播放在线| 久久男人中文字幕资源站| 北条麻妃高清一区| 国产麻豆精品一区| 日本一不卡视频| 97超级碰在线看视频免费在线看 | 日韩av地址| 国产成人免费视频| 91精品久久久久久久久| 精品久久久久久久久久久国产字幕 | 亚洲午夜精品福利| 你懂的在线观看| av一二三不卡影片| 国产精品视频福利| www.色亚洲| 国产精品一区二区不卡| 成人亲热视频网站| 97人妻精品一区二区三区| 日本欧美大码aⅴ在线播放| 国产97色在线|日韩| 精品在线播放视频| 在线一区欧美| 91精品国产91久久久| 日本熟妇成熟毛茸茸| 亚洲午夜在线| 久久久久免费精品国产| 妺妺窝人体色www婷婷| 午夜亚洲福利| 欧美国产第一页| 久久久久成人网站| 黄色成人av网站| 97国产在线视频| 日本一级淫片色费放| 亚洲精品男同| 欧美一区二区色| 黄色片网站在线免费观看| 久久狠狠一本精品综合网| 亚洲2020天天堂在线观看| 特一级黄色大片| 日韩二区在线观看| 国产精品夜色7777狼人| 国产乱淫片视频| 国产成人av自拍| 国产综合18久久久久久| 飘雪影视在线观看免费观看 | 日韩午夜中文字幕| 妖精视频一区二区| 国产欧美日韩影院| 久久精品视频免费播放| 久草国产在线观看| 免费视频一区二区三区在线观看| 国产成人久久久精品一区| 影音先锋国产在线| 国产成人在线电影| 精品久久蜜桃| 日本在线免费网| 一区二区三区久久| 国产免费人做人爱午夜视频| 久久精品超碰| 亚洲国产欧美一区二区三区久久| 无码国产69精品久久久久同性| 四虎成人精品永久免费av九九| 久青草国产97香蕉在线视频| 中日韩黄色大片| 另类专区欧美蜜桃臀第一页| 国产经典一区二区三区| 国产在线91| 亚洲一区二区中文在线| 久久久久久久久久久视频| 久久久久久一区二区三区四区别墅| 日韩视频中午一区| 欧美激情 一区| 亚洲欧美伊人| 国产精品私拍pans大尺度在线| xxxx国产精品| 久久久五月婷婷| 免费在线看黄色片| а√天堂8资源中文在线| 欧美日韩一级黄| 欧美黑人欧美精品刺激| 亚洲无中文字幕| 国产福利精品av综合导导航| xxxx18国产| 中文字幕一区二区三| www.浪潮av.com| julia中文字幕一区二区99在线| 国产亚洲欧美日韩精品| 粉嫩aⅴ一区二区三区| 蜜桃精品视频在线| 精品一区二区国产| av免费在线免费观看| 91九色02白丝porn| 波多野结衣视频播放| 亚洲精品国产成人影院| 国产精品亚洲欧美导航| 你懂的在线播放| 懂色aⅴ精品一区二区三区蜜月| 国产老头和老头xxxx×| 日韩欧美三级| 国产精品极品美女粉嫩高清在线| 五月婷婷深深爱| 亚洲一级电影视频| 国产精品嫩草69影院| 99国产**精品****| 国产精品第一视频| 精品推荐蜜桃传媒| 色国产精品一区在线观看| 一本加勒比波多野结衣| 在线国产欧美| 官网99热精品| 黄色网页网址在线免费| 欧美精品三级在线观看| 亚洲欧美综合7777色婷婷| 日本特黄久久久高潮| 欧美日韩一区在线播放| 亚洲涩涩在线| 亚洲欧美制服另类日韩| 黄色片视频免费| 久久久综合精品| 女性隐私黄www网站视频| 蜜桃一区二区三区| 国产成人涩涩涩视频在线观看 | 国产手机视频在线| 亚洲精品欧美激情| 免费黄视频在线观看| 欧美精品1区| 国产98在线|日韩| 97久久人人超碰caoprom| 亚洲娇小xxxx欧美娇小| 伊人手机在线视频| 中文字幕免费不卡在线| 色播五月综合网| 国产精品99久久久久久动医院| 国产日韩欧美夫妻视频在线观看| 欧美日韩在线看片| 91精品国产色综合久久不卡蜜臀| 欧美人禽zoz0强交| 成人av电影免费在线播放| 97超碰青青草| 欧洲乱码伦视频免费| 国产这里只有精品| 91麻豆国产福利在线观看宅福利| 日韩免费在线观看| 国产微拍精品一区| 国产欧美日本一区视频| 国产精品久久久久久9999| 欧美日韩专区| 欧美日韩国产综合视频在线| 国产麻豆一区| 久久久久久久久久久网站| 青青久在线视频| 这里只有精品视频在线观看| 国产亚洲自拍av| 久久久美女毛片| 精品视频在线播放免| 日本黄色小说视频| 波多野结衣中文字幕一区二区三区| 免费看一级大黄情大片| 欧美日韩国产一区二区三区不卡 | www.avtt| 精品精品99| 99精品国产高清一区二区| 亚洲欧美韩国| 久久亚洲精品一区二区| 人成免费电影一二三区在线观看| 欧美乱熟臀69xxxxxx| 日本免费一二三区| 中文字幕中文字幕一区| 亚洲精品第二页| 蜜桃精品视频在线| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 91偷拍一区二区三区精品| 国产精品亚洲综合| 成人国产一区| 97视频在线观看成人| 在线观看av黄网站永久| 亚洲成av人片在线观看香蕉| 亚洲最大成人av| 偷偷要91色婷婷| 午夜精品福利在线视频| 久久精品夜夜夜夜久久| 中文字幕视频观看| 久久se这里有精品| 各处沟厕大尺度偷拍女厕嘘嘘| 51精产品一区一区三区| 日韩亚洲视频| 伦理一区二区| 91一区二区三区| 国产成人77亚洲精品www| 91成人免费观看网站| 日本在线观看高清完整版| 日韩有码在线播放| 四虎精品在永久在线观看 | 91精品国产综合久久久久久蜜臀| 男人天堂视频在线观看| 色综合久久88| 成人毛片av在线| 波霸ol色综合久久| av在线1区2区| 伊人久久大香线蕉av一区二区| 午夜在线视频观看| 亚洲第一av网| 成人免费公开视频| 日韩女优毛片在线| 99久久免费国产精精品| 正在播放亚洲一区| 艳妇乳肉豪妇荡乳av| 欧美色综合影院| 伊人网综合在线| 欧美日韩激情一区| 中文字幕网址在线| 欧美视频完全免费看| 懂色av蜜臀av粉嫩av喷吹| 一本一道波多野结衣一区二区| 天天操天天射天天爽| 午夜久久久久久电影| 精品无码久久久久久久久| 一二三四社区欧美黄| 青娱乐免费在线视频| 一区二区三区在线免费视频| 欧美成人免费看| 亚洲一区二区三区在线播放| 国产精品成人免费观看| 亚洲一区二区五区| 五月婷婷激情网| 欧美性猛交xxxx乱大交| 神马久久久久久久| 欧美在线观看你懂的| 亚洲综合网av| 日韩欧美一二区| 黄色一级大片在线免费看国产一 | 影音先锋在线播放| 欧美精品在线网站| www.8ⅹ8ⅹ羞羞漫画在线看| 午夜精品久久久久久99热软件 | 欧美日韩人人澡狠狠躁视频| 午夜精品久久久久久久久久久久久蜜桃| 婷婷久久综合九色国产成人| 黄色在线视频网址| 欧美日韩免费一区二区三区视频| 91久久精品无码一区二区| 日韩一区二区免费视频| 欧洲成人一区二区三区| 亚洲偷欧美偷国内偷| 亚洲视频tv| 欧美激情亚洲精品| 成人教育av| 91人人爽人人爽人人精88v| 在线精品视频一区| 青娱乐国产91| 亚洲久久久久| 日本www在线视频| 蜜臀久久久久久久| 国产精品手机在线观看| 国产日产欧美一区二区视频| 免费黄色激情视频| 性感美女极品91精品| 中文字幕第2页| 精品国产乱码久久久久久久| 久青青在线观看视频国产| 欧美大胆在线视频| 精品日韩视频| 亚洲最大av在线| 亚洲精品3区| 97在线免费视频观看| 玖玖玖国产精品| 中文字幕在线观看视频www| 国产三级精品视频| 国产精品16p| 欧美日韩的一区二区| 亚洲三区在线播放| 欧美人成在线视频| 欧美三级精品| 国内一区在线| 91精品一区二区三区综合在线爱| 97在线播放视频| 国产成人一区在线| 国产视频123区| 欧美日韩综合视频| 亚洲美女福利视频| 久久精品国产一区二区电影| 亚洲欧洲高清| 国产精品国产一区二区| 日韩一区电影| 免费黄色一级网站| 26uuu精品一区二区在线观看| 玖玖爱这里只有精品| 欧美色图一区二区三区| 亚洲 美腿 欧美 偷拍| 欧美激情网站在线观看| 蜜桃在线一区| 中文字幕欧美日韩一区二区| 日韩精品每日更新| 白丝女仆被免费网站| 精品国产乱码久久久久久婷婷| 精品人妻一区二区三区麻豆91 | 一区二区三区日韩视频| 日韩精品电影一区亚洲| 91中文字幕永久在线| 精品日韩美女的视频高清| 亚洲精品成av人片天堂无码| 欧美成人精品三级在线观看| 57pao成人永久免费| 色噜噜狠狠色综合网| 日韩二区三区四区| 一级片视频免费看| 91精品1区2区| 福利在线播放| 国产精品视频导航| 日韩国产一区| 亚洲欧洲日本精品| 国产精品另类一区| 在线播放一级片| www日韩欧美| 四虎影视国产精品| 中文字幕欧美日韩一区二区三区| 久色婷婷小香蕉久久| 色偷偷www8888| 在线电影院国产精品| 国产乱色在线观看| 97久草视频| 日韩视频一区| 国产熟妇搡bbbb搡bbbb| 欧美亚洲国产怡红院影院| 在线观看麻豆蜜桃| 成人激情视频在线播放| 性xxxx欧美老肥妇牲乱| 三大队在线观看| 亚洲国产成人av好男人在线观看| 人人妻人人澡人人爽久久av| 97在线免费观看| 精品精品99| 免费黄频在线观看| 亚洲国产日韩a在线播放性色| 午夜视频在线播放| 国产精品国产三级国产aⅴ浪潮 | 一级特黄aa大片| 欧美成人黑人xx视频免费观看| 亚洲精品一区在线| 国产 日韩 亚洲 欧美| 久久久久成人黄色影片| 一级片一区二区三区| 欧美美最猛性xxxxxx| 日韩高清成人在线| 欧美伦理片在线观看| 一区二区在线观看免费| 色丁香婷婷综合久久| 国产精品99久久99久久久二8| 91精品综合| 欧美 日本 国产| 欧美日韩一本到| 成年网站在线视频网站| 欧美一区二区三区四区五区六区| 久久精品国产77777蜜臀| 黄色一级免费视频| 亚洲一级免费视频| 秋霞影院一区| 免费激情视频在线观看| 亚洲精品菠萝久久久久久久| 亚洲av片在线观看| 成人国产精品一区| 国产欧美日本| 日本高清不卡免费| 日韩精品久久久久| 91九色成人| 中国丰满人妻videoshd| 亚洲三级在线观看| 男女污视频在线观看| av一区观看| 日本中文字幕不卡| 天天操天天干视频| 欧美精品一区二区免费| 成人综合久久|