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

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

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

    隨筆-5  評論-41  文章-13  trackbacks-0

    1 <script language="javascript">
    2 function format(){
    3     var r = /\S[^\r\n]*\S/;
    4     var name="\r\n              username__  nn \r\n               ";
    5     var rName=name.match(r);
    6     return rName;
    7 }
    8 </script>

        這兩天被正則表達式搞得云里霧里的。很快就得出了自己想要的結果,但是卻連自己都不知道自己的正則表達式應該怎么解釋。以前雖然也用過正則表達式寫一些東 西,但是卻沒仔細理解過它的執行步驟。借此機會對正則表達式進行了一下學習,才發現原來知道了正則表達式的執行步驟之后,要對它進行解釋也是很容易的。
        以上面的代碼為例,目標是要取出“username__  nn”這個字符串。
        我原來的錯誤理解是這樣的:一開始就拿整個正則表達式“\S[^\r\n]*\S”去對name字符串從左到右進行匹配,那么以“非空字符(\S)”開頭,以“非空字符(\S)”結尾,中間是非"\r\n"的字符串,第一個匹配的結果應該是“username__”啊,怎么會是“username__  nn”呢?后來google了一些資料看了之后才明白,是我把執行的步驟搞錯的。
        正確的解釋應該是這樣的:首先用正則表達式的第一個匹配符“\S”去對name進行匹配,得到結果"username__  nn \r\n               ",然后用"[^\r\n]*"從"s"開始進行匹配,得到結果"username__  nn空格",由于最后用"\S"對前面得出的結果"username__  nn空格"進行匹配(由于[^\r\n]*中的*的存在,所以匹配"\S[^\r\n]*"的其實是一組結果--從"us"一直到"username__  nn空格",而最后那個"\S"則是對一組結果都進行匹配,匹配后也會得到一組結果--從"us"一直到"username__",再加上"username__  n"和"username__  nn"),返回最大匹配結果,得到正確的結果"username__  nn"。
        寫得好像有點亂,要是看完理解不了的話,按照上面說的可能結果對原始字符串name進行一下修改,做一下測試就會明白了。
    posted on 2006-02-08 12:04 OO 閱讀(566) 評論(0)  編輯  收藏 所屬分類: java相關的亂七八糟的東西
    主站蜘蛛池模板: 中文在线免费看视频| 久久亚洲精品国产精品婷婷 | 日本一区二区在线免费观看| 亚洲色大18成人网站WWW在线播放| 亚洲春色另类小说| 亚洲国色天香视频| 亚洲卡一卡二卡乱码新区| 国产婷婷综合丁香亚洲欧洲| 亚洲人成小说网站色| 亚洲国产aⅴ成人精品无吗| 亚洲AV无码国产精品永久一区| 亚洲欧洲免费无码| 亚洲aⅴ无码专区在线观看春色 | 久久久婷婷五月亚洲97号色| 亚洲精品日韩专区silk| 亚洲va乱码一区二区三区| 亚洲一区二区三区国产精华液| 亚洲欧美日韩中文二区| 久久久久亚洲国产AV麻豆| 无码免费又爽又高潮喷水的视频| h视频在线免费观看| 日本卡1卡2卡三卡免费| 日本免费xxxx| 国产美女做a免费视频软件| 亚洲av无码不卡私人影院| 国产91精品一区二区麻豆亚洲 | 波多野结衣中文一区二区免费 | 亚洲精品视频免费观看| 亚洲另类激情综合偷自拍图| 亚洲第一精品福利| 国产婷婷综合丁香亚洲欧洲| 美女视频黄频a免费观看| 久热免费在线视频| 4hu四虎最新免费地址| 日韩精品视频免费在线观看| 国产专区一va亚洲v天堂| 色婷婷六月亚洲婷婷丁香| 亚洲AV噜噜一区二区三区| 岛国精品一区免费视频在线观看 | 成年网在线观看免费观看网址| 国产免费阿v精品视频网址|