国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Java中Pattern.compile函數的用法

發(fā)布時(shí)間:2021-09-04 11:55 來(lái)源:億速云 閱讀:0 作者:chen 欄目: 開(kāi)發(fā)技術(shù)

這篇文章主要講解了“Java中Pattern.compile函數的用法”,文中的講解內容簡(jiǎn)單清晰,易于學(xué)習與理解,下面請大家跟著(zhù)小編的思路慢慢深入,一起來(lái)研究和學(xué)習“Java中Pattern.compile函數的用法”吧!

目錄
  • Java Pattern.compile函數的使用

    • Pattern類(lèi)的compile()方法還有另一個(gè)版本:

    • flag來(lái)自以下Pattern類(lèi)中的常量:

    • 我們可以通過(guò)“或”( | )操作組合多個(gè)標記的功能

    • 使用Pattern.COMMENTS(?x)的例子:

  • Pattern.compile函數的相關(guān)解釋

    • flag的取值范圍如下:

Java Pattern.compile函數的使用

除了Pattern Pattern.compile(String regex),

Pattern類(lèi)的compile()方法還有另一個(gè)版本:

Pattern Pattern.complie(String regex,int flag),它接受一個(gè)標記參數flag,以調整匹配的行為。

flag來(lái)自以下Pattern類(lèi)中的常量:

在這些標記中 Pattern.CASE_INSENSITIVE(?i) ,Pattern.MULTLINE(?m),==Pattern.COMMENTS(?x)==中特別有用。

使用示例如下:

我們可以通過(guò)“或”( | )操作組合多個(gè)標記的功能

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ReFlags {
 public static void main(String[] args) {  
  Pattern p=Pattern.compile("^java",Pattern.CASE_INSENSITIVE|Pattern.MULTILINE);
  /*
   * 使用Pattern.CASE_INSENSITIVE(大小寫(xiě)不敏感的匹配)和Pattern.MULTILINE(多行模式)標記,忽略大小寫(xiě)地匹配所有以java開(kāi)頭的行
   */
  
  Matcher m=p.matcher("java has regex\nJava has regex\n"
    + "JAVA has pretty good regular expression\n"
    + "Regular expressions are in JavA");
  while (m.find()) { 
   System.out.println(m.group());//輸出已匹配的部分  
  }
 }
}

輸出結果:

java

Java

JAVA

使用Pattern.COMMENTS(?x)的例子:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ReFlags_Comments {
 public static void main(String[] args) {
  /*
   * 不使用Pattern.COMMENTS(不啟動(dòng)注釋)
   */
         String s="123";
         Pattern p1=Pattern.compile(" (\\d+)+#test comments");
         Matcher m1=p1.matcher(s);
         System.out.println(m1.matches());//false
         /*
                    * 正則表達式中使用啟動(dòng)注釋的標記
          */
         Pattern p2=Pattern.compile("(?x) (\\d+)+#test comments");
         Matcher m2=p2.matcher(s);
         System.out.println(m2.matches());//true
         /*
               * 參數中使用Pattern.COMMENTS以啟動(dòng)注釋
          */
         Pattern p3=Pattern.compile("  (\\d+)+#test comments",Pattern.COMMENTS);
         Matcher m3=p3.matcher(s);
         System.out.println(m3.matches());//true 
 }
}

運行結果:

false

true

true

Pattern.compile函數的相關(guān)解釋

Pattern.compile函數:

Pattern Pattern.compile(String regex, int flag)

flag的取值范圍如下:

  • Pattern.CANON_EQ:當且僅當兩個(gè)字符的"正規分解(canonical decomposition)"都完全相同的情況下,才認定匹配。比如用了這個(gè)標志之后,表達 式"a\u030A"會(huì )匹配"?"。默認情況下,不考慮"規范相等性(canonical equivalence)"。

  • Pattern.CASE_INSENSITIVE: 默認情況下,大小寫(xiě)不敏感的匹配只適用于US-ASCII字符集。這個(gè)標志能讓表達式忽略大小寫(xiě)進(jìn)行匹配。要想對Unicode字符進(jìn)行大小不明感的匹 配,只要將UNICODE_CASE與這個(gè)標志合起來(lái)就行了。

  • Pattern.COMMENTS: 在這種模式下,匹配時(shí)會(huì )忽略(正則表達式里的)空格字符(不是指表達式里的"\\s",而是指表達式里的空格,tab,回車(chē)之類(lèi))。注釋從#開(kāi)始,一直到這行結束??梢酝ㄟ^(guò)嵌入式的標志來(lái)啟用Unix行模式。

  • Pattern.DOTALL: 在這種模式下,表達式'.'可以匹配任意字符,包括表示一行的結束符。默認情況下,表達式'.'不匹配行的結束符。

  • Pattern.MULTILINE: 在這種模式下,'^'和'$'分別匹配一行的開(kāi)始和結束。此外,'^'仍然匹配字符串的開(kāi)始,'$'也匹配字符串的結束。默認情況下,這兩個(gè)表達式僅僅匹配字符串的開(kāi)始和結束。

  • Pattern.UNICODE_CASE: 在這個(gè)模式下,如果你還啟用了CASE_INSENSITIVE標志,那么它會(huì )對Unicode字符進(jìn)行大小寫(xiě)不明感的匹配。默認情況下,大小寫(xiě)不敏感的匹配只適用于US-ASCII字符集。

  • Pattern.UNIX_LINES(?d) 在這個(gè)模式下,只有'\n'才被認作一行的中止,并且與'.','^',以及'$'進(jìn)行匹配。

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

亚洲中文字幕无码久久| 大地影视MV高清视频在线观看| 亚洲AV永久无码天堂网毛片| 国产成人综合久久久久久| 久久99久久99精品免视看动漫| 未成满18禁止免费无码网站|