亚洲一级电影在线观看,九九精品无码专区免费,亚洲AV无码资源在线观看 ,欧美国产高清

java中正則表達(dá)式概述

時間:2024-08-22 06:33:09 JAVA認(rèn)證 我要投稿
  • 相關(guān)推薦

java中正則表達(dá)式概述

  正則表達(dá)式是計算機(jī)科學(xué)的一個概念。正則表達(dá)式使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。在很多文本編輯器里,正則表達(dá)式通常被用來檢索、替換那些符合某個模式的文本。那么java正則表達(dá)式的內(nèi)容是什么呢?下面跟yjbys小編一起來看看吧!

  一、正則表達(dá)式到底是什么東西?

  在編寫處理字符串的程序或網(wǎng)頁時,經(jīng)常會有查找符合某些復(fù)雜規(guī)則的字符串的需要。正則表達(dá)式就是用于描述這些規(guī)則的工具。換句話說,正則表達(dá)式就是記錄文本規(guī)則的代碼。

  很可能你使用過Windows/Dos下用于文件查找的通配符(wildcard),也就是*和?。如果你想查找某個目錄下的所有的Word文檔的話,你會搜索*.doc。在這里,*會被解釋成任意的字符串。和通配符類似,正則表達(dá)式也是用來進(jìn)行文本匹配的工具,只不過比起通配符,它能更精確地描述你的需求——當(dāng)然,代價就是更復(fù)雜——比如你可以編寫一個正則表達(dá)式,用來查找所有以0開頭,后面跟著2-3個數(shù)字,然后是一個連字號“-”,最后是7或8位數(shù)字的字符串(像010-12345678或0376-7654321)。

  二、正則表達(dá)式的基本操作

  正則表達(dá)式定義:符合一定規(guī)則的表達(dá)式。

  作用:用于專門操作字符串。

  特點(diǎn):用于一些特定的符號來表示一些代碼操作。這樣就簡化書寫。所以學(xué)習(xí)正則表達(dá)式,就是在學(xué)習(xí)一些特殊符號的使用。

  好處:可以簡化對字符串的復(fù)雜操作。

  弊端:符號定義越多,正則越長,閱讀性越差。

  具體操作功能:

  1,匹配:String matches方法。用規(guī)則匹配整個字符串,只要有一處不符合規(guī)則,就匹配結(jié)束,返回false。

  2,切割:String split();

  3,替換:String replaceAll(regex,str);如果regex中有定義組,可以在第二參數(shù)中通過$符號獲取正則表達(dá)式中的已有的組。

  4,獲取:將字符串中的符合規(guī)則的子串取出。

  操作步驟:

  1),將正則表達(dá)式封裝成對象。

  2),讓正則對象和要操作的字符串相關(guān)聯(lián)。

  3),關(guān)聯(lián)后,獲取正則匹配引擎。

  4),通過引擎對符合規(guī)則的子串進(jìn)行操作,比如取出。

  三、API文檔中常用符號

字符類

[abc]

a、b 或 c(簡單類)

[^abc]

任何字符,除了 a、b 或 c(否定)

[a-zA-Z]

a 到 z 或 A 到 Z,兩頭的字母包括在內(nèi)(范圍)

[a-d[m-p]]

a 到 d 或 m 到 p:[a-dm-p](并集)

[a-z&&[def]]

d、e 或 f(交集)

[a-z&&[^bc]]

a 到 z,除了 b 和 c:[ad-z](減去)

[a-z&&[^m-p]]

a 到 z,而非 m 到 p:[a-lq-z](減去)

預(yù)定義字符類

.

任何字符(與行結(jié)束符可能匹配也可能不匹配)

\d

數(shù)字:[0-9]

\D

非數(shù)字: [^0-9]

\s

空白字符:[ \t\n\x0B\f\r]

\S

非空白字符:[^\s]

\w

單詞字符:[a-zA-Z_0-9]

\W

非單詞字符:[^\w]

邊界匹配器

^

行的開頭

$

行的結(jié)尾

\b

單詞邊界

\B

非單詞邊界

\A

輸入的開頭

\G

上一個匹配的結(jié)尾

\Z

輸入的結(jié)尾,僅用于最后的結(jié)束符(如果有的話)

\z

輸入的結(jié)尾

Greedy 數(shù)量詞

X?

X,一次或一次也沒有

X*

X,零次或多次

X+

X,一次或多次

X{n}

X,恰好 n

X{n,}

X,至少 n

X{n,m}

X,至少 n 次,但是不超過 m

  四、方法摘要

static Pattern

compile(String regex) 將給定的正則表達(dá)式編譯到模式中。

static Pattern

compile(String regex, int flags) 將給定的正則表達(dá)式編譯到具有給定標(biāo)志的模式中。

int

flags() 返回此模式的匹配標(biāo)志。

Matcher

matcher(CharSequence input) 創(chuàng)建匹配給定輸入與此模式的匹配器。

static boolean

matches(String regex, CharSequence input) 編譯給定正則表達(dá)式并嘗試將給定輸入與其匹配。

String

pattern() 返回在其中編譯過此模式的正則表達(dá)式。

static String

quote(String s) 返回指定 String 的字面值模式 String。

String[]

split(CharSequence input) 圍繞此模式的匹配拆分給定輸入序列。

String[]

split(CharSequence input, int limit) 圍繞此模式的匹配拆分給定輸入序列。

String

toString() 返回此模式的字符串表示形式。

  五、案例

  1、匹配案例

  1)電話號碼匹配案例

  public static void checkTel()

  {

  String tel = "16900001111";

  String telReg = "1[358]\\d{9}";

  System.out.println(tel.matches(telReg));

  }

  2)數(shù)字和字母組成的字符串匹配

  public static void demo()

  {

  String str = "b23a23456789";

  String reg = "[a-zA-Z]\\d*";

  boolean b= str.matches(reg);

  System.out.println(b);

  }

  3)QQ號碼匹配

  要求:5~15 0不能開頭,只能是數(shù)字

  public static void checkQQ()

  {

  String qq = "123a454";

  String regex = "[1-9]\\d{4,14}";

  boolean flag = qq.matches(regex);

  if(flag)

  System.out.println(qq+"...is ok");

  else

  System.out.println(qq+"... 不合法");

  }

  2、切割案例

  按照.進(jìn)行切割:splitDemo("zhangsan.lisi.wangwu","\\.");

  按照\\進(jìn)行切割:splitDemo("c:\\abc\\a.txt","\\\\");

  按照多個空格來進(jìn)行切割:String reg = " +";空格+

  按照疊詞切割:splitDemo("erkktyqqquizzzzzo","(.)\\1+");//按照疊詞完成切割。為了可以讓規(guī)則的結(jié)果被重用,可以將規(guī)則封裝成一個組。用()完成。組的出現(xiàn)都有編號。從1開始。 想要使用已有的組可以通過 \n(n就是組的編號)的形式來獲取。

  3、替換案例

  將字符串中的數(shù)組替換成#。

  String str = "wer1389980000ty1234564uiod234345675f";

  replaceAllDemo(str,"\\d{5,}","#");

  將重疊的字符替換成單個字母。zzzz->z

  String str1 = "erkktyqqquizzzzzo";//

  replaceAllDemo(str1,"(.)\\1+","$1");

  4、獲取案例

  獲取:將字符串中的符合規(guī)則的子串取出。

  public static void getDemo()

  {

  String str = "ming tian jiu yao fang jia le ,da jia。";

  System.out.println(str);

  String reg = "\\b[a-z]{4}\\b";

  //將規(guī)則封裝成對象。

  Pattern p = Pattern.compile(reg);

  //讓正則對象和要作用的字符串相關(guān)聯(lián)。獲取匹配器對象。

  Matcher m = p.matcher(str);

  //將規(guī)則作用到字符串上,并進(jìn)行符合規(guī)則的子串循環(huán)查找。

  while(m.find())

  {

  //用于獲取匹配后結(jié)果。

  System.out.println(m.group());

  System.out.println(m.start()+"...."+m.end());

  }

  }

【java中正則表達(dá)式概述】相關(guān)文章:

JAVA正則表達(dá)式語法大全03-29

Java中的動態(tài)代碼編程03-05

在Java中執(zhí)行JavaScript代碼04-01

java程序中如何調(diào)用linux命令03-29

Java中類的設(shè)計技巧有哪些03-04

Oracle正則表達(dá)式匯集03-28

JAVA和.NET開發(fā)過程中的區(qū)別04-27

java中continue跳轉(zhuǎn)語句使用方法03-29

java中File類有哪些使用方法03-14

主站蜘蛛池模板: 精品熟女少妇免费久久| 中文字幕日产无码| 国产精品亚洲ΑV三区| 高邑县| 亚洲视频日韩视欧美视频| 中文字日产幕乱五区| 国产suv精品一区二区69| 男人添女人囗交做爰视频| 日本丰满熟妇hd| 国产极品美女高潮无套| 99这里有精品视频视频| 久久国产色av免费看| 99精品视频播放| 国产精品日韩欧美一区二区三区| 性色av 一区二区三区| 色达县| 欧美精品一区二区性色a+v| 亚洲视频日本有码中文| 精品国产av色欲果冻传媒| 99精品久久精品| 国产精品久久久久久久| 真人与拘做受免费视频| 亚洲精品亚洲人成在线| 利川市| 亚洲国产精品成人一区二区在线| 亚洲中文字幕无码天然素人在线| 日韩一区国产二区欧美三区| 免费一区二区无码东京热| 日日噜狠狠噜天天噜av| 狂野欧美激情性xxxx在线观看| 潮喷失禁大喷水aⅴ无码| 久久香综合精品久久伊人| 成在人线无码aⅴ免费视频 | 99久久无色码中文字幕| 国产日韩综合一区在线观看| 亚洲国产精品久久久久制服| 亚洲熟伦熟女新五十路熟妇| 国产在线精选免费视频8x| 久久天天躁夜夜躁狠狠躁综合| 高清无码18| 2021国产精品午夜久久|