1. 程式人生 > >學習筆記-基礎知識16-正則表示式

學習筆記-基礎知識16-正則表示式

正則表示式

正則表示式:符合一定規則的表示式:regex
作用:用於專門操作字串
特點:用一些特定的符合來表示一些程式碼操作,這樣就簡化書寫。
所以學習正則表示式,就是學習對一些特殊符號的使用

好處:可以簡化對字串的複雜操作
弊端:符號定義越多,正則越長,閱讀性越差。

具體操作:

在java.lang.String中(String類中)
1.匹配
boolean matches(String regex):告知此字串是否匹配給定的正則表示式,返回布林型的值。
用規則匹配整個字串,只要一處匹配
規則:
字元類:
[abc]:這個字串中的第一個字元只能是abc中的一個,而且這個字串只能是一個字元。
[^abc]:任何字元,除了abc
[abc][a-z]:第一個字元是abc中的一個,第二個字元是a-z任意一個字元
[a-zA-Z]:a-z或A-Z中的字元

預定義字元類:
    .:任意字元
    \d:數字[0-9]
    \D:非數字[^0-9]
    \w:單詞字元[a-zA-Z_0-9]
    \W:非單詞字元[^\w]
在java中,字串中出現\,會將後面的字元轉義字元,
在正則表示式中,\d是一個整體,要把這個\轉義成普通的\,再和後面的字元組合。
所以在正則表示式中,\是一對一對出現的。\\d

Greedy數量詞:
    X? : X 出現一次或一次沒有
    X* : 零次或多次
    X+ : 一次或多次
    X{n} : 恰好n次
    X{n,} : 至少n次
    X{n,m} : 至少n次,不超過m次

邊界匹配器:
    找3個字母組成的單詞:regex="\\b[a-z]{3}\\b";
    \b:單詞邊界;\B非單詞邊界 

**2.切割:**String類中的split
String split(String regex):

多個空格切:" +"
按.切:"\\.":
    因為.是正則表示式的特殊符號,所以要轉義。
    正則表示式中.是用\.表示,所以要轉義\\.
按\\切:"\\\\" 

按疊詞切:!!!!
按疊詞切:"(.)\\1+" :兩個或兩個以上相同的字元疊詞所以用+
第一位是任意字元,第二位拿第一位的值。
為了讓規則的結果被重用,可將要重用的部分封裝成一個組,用()表示。
組封裝完後,會有自動編號,從1開始。
想要使用已有的組,可通過\n(n就是組的編號)的形式來獲取。
兩個或兩個以上相同的字元疊詞所以用+

複雜表示式:((A)(B(C)))共有4個組
1-((A)(B(C)))
2-(A)
3-(B(C))
4-(C)

**3.替換:**String類中的replaceAll()
String replaceAll(String regex,String replacement)
String replaceAll(String str,String regex,String replacement)

4.獲取:將符合規則的字串取出。
操作步驟:
1.將正則表示式封裝成物件1.Pattern p=Pattern.compile(regex);
2.讓正則物件和要操作的字串相關聯 2.3. Matcher m=p.matcher(str);
3.關聯後,獲取正則匹配引擎
4.通過引擎對符合規則的子串進行操作,比如取出。4. m.group()

Pattern類:正則表示式的編譯表達形式
Pattern類在java.util.regex.Pattern;
Pattern:不能new物件。

方法:
static Pattern compile(String regex):將給定的表示式編譯到模式中。
Matcher matcher(CharSquence input):建立匹配給定輸入與此模式的匹配器。
static boolean matcher(String regex,CharSquence input):
編譯指定正則表示式並嘗試將給定輸入與其匹配。

Matcher類(物件):java.util.regex.Matcher;
Matcher類(物件):通過解釋Pattern對character sequence執行匹配操作的引擎。

CharSequence:java.lang.*;
字元區的介面,有個子類String。

Matcher類(物件)中的功能:此模式新匹配器
boolean matches():將整個區域與模式匹配,同String類的matches方法。
    其實String類中的matches方法,用的就是Pattern和Matcher物件來完成的,
    只不過被String的方法封裝後,用起來較為簡單,但是功能卻單一。
String group():返回由以前匹配操作所匹配的輸入子序列。
    m.group():用於獲取匹配後結果
boolean find():嘗試查詢與該模式匹配的輸入序列的下一個子序列。
    boolean b=m.find():將規則作用到字串上並進行符合規則的子串查詢。

int start():
    m.start():子串的索引的開頭角標
int end():
    m.end():子串的索引的結尾角標

找3個字母組成的單詞:regex="\\b[a-z]{3}\\b";
    \b:單詞邊界;\B非單詞邊界 

相關推薦

學習筆記-基礎知識16-表示式

正則表示式 正則表示式:符合一定規則的表示式:regex 作用:用於專門操作字串 特點:用一些特定的符合來表示一些程式碼操作,這樣就簡化書寫。 所以學習正則表示式,就是學習對一些特殊符號的使用 好處:可以簡化對字串的複雜操作 弊端:符號

Python學習筆記模式匹配與表示式之使用和不使用表示式

 隨筆記錄方便自己和同路人查閱。 #------------------------------------------------我是可恥的分割線-------------------------------------------   假設你希望在字串中查詢電話號碼。你知道模式:3個數字,一

表示式學習筆記(二)——簡單的表示式

一、簡單的正則表示式 注意: 在使用正則表示式的時候,會發現幾乎所有的問題都有不止一種解決方法。 有的比較簡單,有的比較快速,有的相容性很好,有的功能更全,同一個問題往往會有多種解決方

shell指令碼程式設計學習筆記(2)表示式

編寫shell指令碼時經常用到的基本操作就是尋找包含特定文字的行,雖然用簡單的grep命令可以完成一些簡單的工作,但是正則表示式無疑是繞不開的。本文主要介紹基本正則表示式。 總的來說,正則表示式由兩部分組成:一般字元和特殊字元。特殊字元(meta)在正則表示式中往往具有特

Python學習筆記四——字串與表示式

1、Python將若干值插入到帶有“%”標記的字串中      format="%s %d" %(str1,num)      print "%(version)s:%(num).1f" % {"version":"version","num":2} #字典格式化,value值被輸出 2、字串對齊函式:

Redux學習筆記-基礎知識

事件處理 學習筆記 情況 分發 .org 新的 分數 class 特點 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Helvetica Neue"; color: #404040 } p.p2 { margin

javascript基礎知識表達式(regular expression)

進行 str 空白 regex 多行匹配 並且 parse int 回車 一種字符串匹配的模式,用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。註意:在javascript中正則表達式也是一種對象1:創建正則表達式兩種方式:隱式創建(

Python基礎知識表達式re模塊

轉換成 spl html href earch 大小 轉載 rec city **轉載自:http://www.cnblogs.com/alex3714/articles/5161349.html** re模塊常用方法 re.match(規則,字符串):默認從開頭開始

爬蟲學習筆記(四)表達式

新的 1.5 正常 它的 都是 split split方法 失去 分割 上一篇博客寫了怎麽發請求和獲取到數據,接下來就是該怎麽處理數據了,打開一個網站之後,它會返回很多數據,數據很多,有很多都是咱們不需要的,咱們寫爬蟲的話只獲取到對咱們自己有用的數據,就要從返回的數據裏面找

Python爬蟲學習筆記(三)——表達式

斜杠 這一 seh 爬蟲 class 學習 常用方法 部分 介紹 介紹 正則表達式是一種處理字符串的強大工具,能實現字符串的檢索、替換、匹配驗證等。在爬蟲中,正則表達式主要用於從HTML裏提取所需要的信息 常用的匹配規則 模式 描述 \w 匹配字母、數字及下劃

Python學習筆記模式匹配與表達式之用表達式匹配更多模式

重復 實例 int clas span 就是 image 特定 mat 隨筆記錄方便自己和同路人查閱。 #------------------------------------------------我是可恥的分割線--------------------------

Day-22 基礎模組3 表示式_re模組

一、正則表示式   正則表示式是對字串操作的一種邏輯公式. 我們一般使用正則表示式對字串進行匹配和過濾. 使用正則的優缺點:    優點: 靈活, 功能性強, 邏輯性強.   缺點: 上手難. 一旦上手, 會愛上這個東西   1.字元組     字元組很簡單用[]括起來. 在[]中出現的內

python學習之-re模組(表示式模組)

什麼是正則表示式 正則就是用一些具有特殊含義的符號組合到一起(稱為正則表示式)來描述字元或者字串的方法。或者說:正則就是用來描述一類事物的規則。(在Python中)它內嵌在Python中,並通過 re 模組實現。正則表示式模式被編譯成一系列的位元組碼,然後由用 C 編寫的匹配引擎執行。 生活中處處都是正則

PHP表示式基礎之認識表示式

正則表示式是我們平常在程式開發過程中經常用到的一種工具,有關於它的起源以及除程式之外的應用場景咱就不贅述了,咱們只看它在程式中是如何來應用的。 這個正則表示式在我們程式中通常是把它當做一種模式去匹配一類字串,通俗地講,就是用一個字串描述一個特徵,完事驗證另外一個字串是否符合這個特徵的公式。你

網路爬蟲必備知識表示式

就庫的範圍,個人認為網路爬蟲必備庫知識包括urllib、requests、re、BeautifulSoup、concurrent.futures,接下來將結對re正則表示式的使用方法進行總結 1. 正則表示式概念   正則表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字

JS基礎丨06. 表示式總結

1. 正則表示式的建立方式: 01. 正則表示式的建立方式 1. 使用new關鍵字; 2. 字面量的方式建立一個正則表示式; 3. 帶字元模式 var box=new RegExp("box"

二十、Go基礎程式設計:表示式

正則表示式是一種進行模式匹配和文字操縱的複雜而又強大的工具。雖然正則表示式比純粹的文字匹配效率低,但是它卻更靈活。按照它的語法規則,隨需構造出的匹配模式就能夠從原始文字中篩選出幾乎任何你想要得到的字元組合。 Go語言通過regexp標準包為正則表示式提供了官方支援,如果你已

CCNA學習筆記 基礎知識回顧(6)

ip地址主機不能全為0或1 直連裝置需要配置相同網段才能進行通訊 網段——路(一段ip地址的集合) 子網掩碼中,連續的1表示網路位,0表示主機位,與ip相對應鎖定 10兆乙太網——ethernet 快速乙太網(百兆乙太網)fastethernrt 千兆乙太網 (吉位元)——gigabit

CCNA學習筆記 基礎知識回顧(5)

CCNA總結(簡) 一、 OSI參考模型 七層 應用層     抽象語言---->編碼 表示層     編碼---->二進位制 會話層     應用程式提供會話地址 類似:QQ號碼 *上三層就是應用程式對資訊程序加工處理,直到可以被傳輸(相當於OSI"工廠"生產貨物的車間);

CCNA學習筆記 基礎知識回顧(4)

OSI參考模型:國際標準化組織(ISO)在1979年建立了一個分委員會來專門研究一種用於開放系統互連的體系結構(Open Systems Interconnection),簡稱OSI。  “開放”這個詞表示:只要遵循OSI標準,一個系統可以和位於世界上任何地方的、也遵循OSI標準的其他