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

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

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

    posts - 8,  comments - 6,  trackbacks - 0

    2.3  在一個(gè)String中查找子串模式

    本章前面的“使用正則表達(dá)式來搜索文本”一節(jié)說明了如何使用regex模式來比較一個(gè)String是否匹配(或部分匹配)一個(gè)給定的模式。這里,匹配是從輸入字符串的第一個(gè)字符開始的。在本節(jié)中,將使用regex模式在一個(gè)String中查找多個(gè)匹配值。舉例來說,可以在一篇文檔中搜索查找嵌入在正文中的任何URL。首先,需要?jiǎng)?chuàng)建一個(gè)匹配URL的模式字符串。下面給出一個(gè)能匹配大多數(shù)URL的模式:

    String urlString = "(http|https|ftp)://[/\\w\\.\\-\\+\\?%=&;:,#]+";

    此模式并不能有效地描述URL,因?yàn)樗财ヅ湟恍┌e(cuò)誤語法的URL字符串,如http://////////。在一些情況下它也會(huì)捕獲額外的字符,如可能緊跟在嵌入到正文中的URL之后的逗號(hào)或分號(hào)。這些字符有時(shí)會(huì)出現(xiàn)在URL中,但是如果URL出現(xiàn)在正文中,這些字符可能不希望URL的一部分而被捕獲。但該模式相對(duì)簡短并且能夠很好地用于搜索文本文件中包含的URL。此模式表達(dá)式的各部分如下所示:

    ●  http、https或ftp 
    ●  ://
    ● / 0-9 A-Z a-z _ . - + ? % = & ; : , #中的一個(gè)或多個(gè)字符
    我們知道,Matcher可以將一個(gè)模式應(yīng)用到一個(gè)特殊的輸入字符串。為了使用前面定義的urlString模式查找多個(gè)子串匹配,必須調(diào)用Matcher的find方法。為了在輸入字符串內(nèi)找到每一個(gè)出現(xiàn)的模式,可以重復(fù)調(diào)用find方法來查找下一個(gè)匹配。當(dāng)沒有更多的匹配時(shí),find方法返回false。為了獲取當(dāng)前匹配的位置,可以使用start和end方法來獲得索引值以在輸入文本中的范圍內(nèi)進(jìn)行匹配。以下的代碼將顯示數(shù)據(jù)內(nèi)找到的所有URL:

    String urlString = "(http|https|ftp)://[/\\w\\.\\-\\+\\?%=&;:,#]+";
    Pattern urlPattern = Pattern.compile(urlString);
    // get the data (somehow)
    String data = getStringData();
    // get a matcher for the data
    Matcher urlMatcher = urlPattern.matcher(data);
    // iterate through the matches
    while (urlMatcher.find()) {
    int startIndex = urlMatcher.start();   // index of start
    int endIndex = urlMatcher.end();        // index of end + 1
    // retrieve the matching substring
    String currentMatch = data.substring(startIndex, endIndex);
    System.out.println(currentMatch);
    }

    此代碼將不能匹配相對(duì)的URL(如/images/picture.jpg),這些URL常常出現(xiàn)在HTML文件或省略前置http://的不完整的URL(如wickedcooljava.com)中。為了知道何時(shí)應(yīng)該將某字符串作為相對(duì)URL來對(duì)待,程序必須理解HTML文件的結(jié)構(gòu)(使用regex也可完成此任務(wù),但是要更困難些)。需要知道每個(gè)匹配的上下文,為此必須在理解其語法的基礎(chǔ)上分析文件。若想了解更多的信息,請(qǐng)參考第3章。

    posted on 2008-12-09 09:29 ♂游泳的魚 閱讀(442) 評(píng)論(1)  編輯  收藏

    FeedBack:
    # re: 2.3 在一個(gè)String中查找子串模式
    2014-12-09 15:03 | 獵頭招聘
    在一個(gè)String中查找子串模式看了好幾篇還是不太懂,看來要回去看第三章。  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    主站蜘蛛池模板: 国产黄色免费网站| 91在线视频免费播放| 免费国内精品久久久久影院| 亚洲精华液一二三产区| 免费看大美女大黄大色| 亚洲AV无码之国产精品| 日韩黄色免费观看| 国产91成人精品亚洲精品| 免费中文字幕在线观看| 一级毛片高清免费播放| 在线精品亚洲一区二区小说| 两个人看的www免费| 亚洲av无码乱码国产精品 | 亚洲精品国产手机| www视频在线观看免费| 麻豆狠色伊人亚洲综合网站 | 99在线观看免费视频| 亚洲午夜在线一区| 精品国产一区二区三区免费看| MM1313亚洲国产精品| 中文字幕精品亚洲无线码一区应用| 中文字幕免费在线看电影大全 | 国产在线jyzzjyzz免费麻豆| 国产亚洲精品成人AA片| 免费人成网站在线播放| 中文字幕在线免费看线人| 亚洲美女中文字幕| 日本免费网站在线观看| 99在线免费观看| 亚洲国产视频一区| 国产中文字幕免费观看| 麻豆精品成人免费国产片| 亚洲国产亚洲综合在线尤物| 国产a不卡片精品免费观看 | 中文精品人人永久免费| 亚洲欧洲高清有无| 亚洲第一区精品观看| 久久国产精品成人片免费| 色屁屁www影院免费观看视频| 久久精品国产99精品国产亚洲性色| 毛片在线看免费版|