久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java正則表達(dá)式學(xué)習(xí)

 wlj2004 2013-12-07

因?yàn)檎齽t表達(dá)式是一個(gè)很龐雜的體系,,此例僅舉些入門的概念,,更多的請(qǐng)參閱相關(guān)書(shū)籍及自行摸索,。

\\
反斜杠
\t
間隔 ('\u0009')
\n
換行 ('\u000A')
\r
回車 ('\u000D')
\d
數(shù)字 等價(jià)于[0-9]
\D
非數(shù)字 等價(jià)于[^0-9]
\s
空白符號(hào) [\t\n\x0B\f\r]
\S
非空白符號(hào) [^\t\n\x0B\f\r]
\w
單獨(dú)字符 [a-zA-Z_0-9]
\W
非單獨(dú)字符 [^a-zA-Z_0-9]
\f
換頁(yè)符
\e Escape
\b
一個(gè)單詞的邊界
\B
一個(gè)非單詞的邊界
\G
前一個(gè)匹配的結(jié)束

^
為限制開(kāi)頭
^java    
條件限制為以Java為開(kāi)頭字符
$
為限制結(jié)尾
java$    
條件限制為以java為結(jié)尾字符
.
條件限制除\n以外任意一個(gè)單獨(dú)字符
java..    
條件限制為java后除換行外任意兩個(gè)字符


加入特定限制條件「[]
[a-z]    
條件限制在小寫a to z范圍中一個(gè)字符
[A-Z]    
條件限制在大寫A to Z范圍中一個(gè)字符
[a-zA-Z]
條件限制在小寫a to z或大寫A to Z范圍中一個(gè)字符
[0-9]    
條件限制在小寫0 to 9范圍中一個(gè)字符
[0-9a-z]
條件限制在小寫0 to 9a to z范圍中一個(gè)字符
[0-9[a-z]]
條件限制在小寫0 to 9a to z范圍中一個(gè)字符(交集)

[]
中加入^后加再次限制條件「[^]
[^a-z]    
條件限制在非小寫a to z范圍中一個(gè)字符
[^A-Z]    
條件限制在非大寫A to Z范圍中一個(gè)字符
[^a-zA-Z]
條件限制在非小寫a to z或大寫A to Z范圍中一個(gè)字符
[^0-9]    
條件限制在非小寫0 to 9范圍中一個(gè)字符
[^0-9a-z]
條件限制在非小寫0 to 9a to z范圍中一個(gè)字符
[^0-9[a-z]]
條件限制在非小寫0 to 9a to z范圍中一個(gè)字符(交集)

在限制條件為特定字符出現(xiàn)0次以上時(shí),,可以使用「*
J*     0
個(gè)以上J
.*     0
個(gè)以上任意字符
J.*D     J
D之間0個(gè)以上任意字符

在限制條件為特定字符出現(xiàn)1次以上時(shí),,可以使用「+
J+     1
個(gè)以上J
.+     1
個(gè)以上任意字符
J.+D     J
D之間1個(gè)以上任意字符

在限制條件為特定字符出現(xiàn)有01次以上時(shí),,可以使用「?
JA?     J
或者JA出現(xiàn)

限制為連續(xù)出現(xiàn)指定次數(shù)字符「{a}
J{2}     JJ
J{3}     JJJ
文字a個(gè)以上,并且「{a,}
J{3,}     JJJ,JJJJ,JJJJJ,???(3
次以上J并存)
文字個(gè)以上,,b個(gè)以下「{a,b}
J{3,5}     JJJ
JJJJJJJJJ
兩者取一「|
J|A     J
A
Java|Hello     Java
Hello

()」中規(guī)定一個(gè)組合類型
比如,,我查詢<a href=\"index.html\">index</a><a href></a>間的數(shù)據(jù),可寫作<a.*href=\".*\">(.+?)</a>

在使用Pattern.compile函數(shù)時(shí),,可以加入控制正則表達(dá)式的匹配行為的參數(shù):
Pattern Pattern.compile(String regex, int flag)

flag
的取值范圍如下:
Pattern.CANON_EQ    
當(dāng)且僅當(dāng)兩個(gè)字符的"正規(guī)分解(canonical decomposition)"都完全相同的情況下,,才認(rèn)定匹配。比如用了這個(gè)標(biāo)志之后,,表達(dá)式"a\u030A"會(huì)匹配"?",。默認(rèn)情況下,不考慮"規(guī) 范相等性(canonical equivalence)",。
Pattern.CASE_INSENSITIVE(?i)    
默認(rèn)情況下,,大小寫不明感的匹配只適用于US-ASCII字符集。這個(gè)標(biāo)志能讓表達(dá)式忽略大小寫進(jìn)行匹配,。要想對(duì)Unicode字符進(jìn)行大小不明感的匹配,,只要將UNICODE_CASE與這個(gè)標(biāo)志合起來(lái)就行了。
Pattern.COMMENTS(?x)    
在這種模式下,,匹配時(shí)會(huì)忽略(正則表達(dá)式里的)空格字符(譯者注:不是指表達(dá)式里的"\\s",而是指表達(dá)式里的空格,,tab,,回車之類)。注釋從#開(kāi)始,,一直到這行結(jié)束,。可以通過(guò)嵌入式的標(biāo)志來(lái)啟用Unix行模式,。
Pattern.DOTALL(?s)    
在這種模式下,,表達(dá)式'.'可以匹配任意字符,包括表示一行的結(jié)束符,。默認(rèn)情況下,,表達(dá)式'.'不匹配行的結(jié)束符。
Pattern.MULTILINE
(?m)    
在這種模式下,,'^''$'分別匹配一行的開(kāi)始和結(jié)束,。此外,,'^'仍然匹配字符串的開(kāi)始,'$'也匹配字符串的結(jié)束,。默認(rèn)情況下,,這兩個(gè)表達(dá)式僅僅匹配字符串的開(kāi)始和結(jié)束。
Pattern.UNICODE_CASE
(?u)    
在這個(gè)模式下,,如果你還啟用了CASE_INSENSITIVE標(biāo)志,,那么它會(huì)對(duì)Unicode字符進(jìn)行大小寫不明感的匹配。默認(rèn)情況下,,大小寫不敏感的匹配只適用于US-ASCII字符集,。
Pattern.UNIX_LINES(?d)    
在這個(gè)模式下,只有'\n'才被認(rèn)作一行的中止,,并且與'.',,'^',以及'$'進(jìn)行匹配,。


拋開(kāi)空泛的概念,,下面寫出幾個(gè)簡(jiǎn)單的Java正則用例:

比如,在字符串包含驗(yàn)證時(shí)

//
查找以Java開(kāi)頭,任意結(jié)尾的字符串
Pattern pattern = Pattern.compile("^Java.*");
Matcher matcher = pattern.matcher("Java
不是人");
boolean b= matcher.matches();
//
當(dāng)條件滿足時(shí),,將返回true,,否則返回false
System.out.println(b);


以多條件分割字符串時(shí)
Pattern pattern = Pattern.compile("[, |]+");
String[] strs = pattern.split("Java Hello World Java,Hello,,World|Sun");
for (int i=0;i<strs.length;i++) {
    System.out.println(strs[i]);
}

文字替換(首次出現(xiàn)字符)
Pattern pattern = Pattern.compile("
正則表達(dá)式");
Matcher matcher = pattern.matcher("
正則表達(dá)式 Hello World,正則表達(dá)式 Hello World");
//
替換第一個(gè)符合正則的數(shù)據(jù)
System.out.println(matcher.replaceFirst("Java"));

文字替換(全部)
Pattern pattern = Pattern.compile("
正則表達(dá)式");
Matcher matcher = pattern.matcher("
正則表達(dá)式 Hello World,正則表達(dá)式 Hello World");
//
替換第一個(gè)符合正則的數(shù)據(jù)
System.out.println(matcher.replaceAll("Java"));


文字替換(置換字符)
Pattern pattern = Pattern.compile("
正則表達(dá)式");
Matcher matcher = pattern.matcher("
正則表達(dá)式 Hello World,正則表達(dá)式 Hello World ");
StringBuffer sbr = new StringBuffer();
while (matcher.find()) {
    matcher.appendReplacement(sbr, "Java");
}
matcher.appendTail(sbr);
System.out.println(sbr.toString());

驗(yàn)證是否為郵箱地址

String str="[email protected]";
Pattern pattern = Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.matches());

去除html標(biāo)記
Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL);
Matcher matcher = pattern.matcher("<a href=\"index.html\">
主頁(yè)</a>");
String string = matcher.replaceAll("");
System.out.println(string);

查找html中對(duì)應(yīng)條件字符串
Pattern pattern = Pattern.compile("href=\"(.+?)\"");
Matcher matcher = pattern.matcher("<a href=\"index.html\">
主頁(yè)</a>");
if(matcher.find())
System.out.println(matcher.group(1));
}

截取http://地址
//
截取url
Pattern pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+");
Matcher matcher = pattern.matcher("dsdsds<http://dsds//gfgffdfd>fdf");
StringBuffer buffer = new StringBuffer();
while(matcher.find()){             
    buffer.append(matcher.group());       
    buffer.append("\r\n");             
System.out.println(buffer.toString());
}
       
替換指定{}中文字

String str = "Java
目前的發(fā)展史是由{0}-{1}";
String[][] object={new String[]{"\\{0\\}","1995"},new String[]{"\\{1\\}","2007"}};
System.out.println(replace(str,object));

public static String replace(final String sourceString,Object[] object) {
            String temp=sourceString;   
            for(int i=0;i<object.length;i++){
                      String[] result=(String[])object[i];
               Pattern    pattern = Pattern.compile(result[0]);
               Matcher matcher = pattern.matcher(temp);
               temp=matcher.replaceAll(result[1]);
            }
            return temp;
}


以正則條件查詢指定目錄下文件

//
用于緩存文件列表
        private ArrayList files = new ArrayList();
        //
用于承載文件路徑
        private String _path;
        //
用于承載未合并的正則公式
        private String _regexp;
       
        class MyFileFilter implements FileFilter {

            /**
               *
匹配文件名稱
               */
            public boolean accept(File file) {
                try {
                  Pattern pattern = Pattern.compile(_regexp);
                  Matcher match = pattern.matcher(file.getName());               
                  return match.matches();
                } catch (Exception e) {
                  return true;
                }
            }
            }
       
        /**
        *
解析輸入流
        * @param inputs
        */
        FilesAnalyze (String path,String regexp){
            getFileName(path,regexp);
        }
       
        /**
        *
分析文件名并加入files
        * @param input
        */
        private void getFileName(String path,String regexp) {
            //
目錄
              _path=path;
              _regexp=regexp;
            File directory = new File(_path);
            File[] filesFile = directory.listFiles(new MyFileFilter());
            if (filesFile == null) return;
            for (int j = 0; j < filesFile.length; j++) {
                files.add(filesFile[j]);
            }
            return;
            }
   
        /**
         *
顯示輸出信息
         * @param out
         */
        public void print (PrintStream out) {
            Iterator elements = files.iterator();
            while (elements.hasNext()) {
                File file=(File) elements.next();
                    out.println(file.getPath());   
            }
        }

        public static void output(String path,String regexp) {

            FilesAnalyze fileGroup1 = new FilesAnalyze(path,regexp);
            fileGroup1.print(System.out);
        }
   
        public static void main (String[] args) {
            output("C:\\","[A-z|.]*");
        }

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多