Java中的正則表達式–軟介紹

正則表達式是一種可以應用于文本(Java中的String)的模式。 Java提供了java.util.regex包,用于與正則表達式進行模式匹配。 Java正則表達式與Perl編程語言非常相似,并且非常易于學習。

正則表達式匹配文本(或文本的一部分),或者不匹配。
*如果正則表達式匹配文本的一部分,那么我們可以找出它是哪一部分。
**如果正則表達式復雜,那么我們可以輕松地找出正則表達式的哪一部分與文本的哪一部分匹配。

第一個例子

正則表達式“ [az] + ”與文本中的所有小寫字母匹配。
[az]表示從az的任何字符,包括+,表示“一個或多個”。

假設我們提供了一個字符串“代碼2學習Java教程”。

在Java中如何做

首先,您必須編譯模式:
導入java.util.regex。*;
模式p = Pattern.compile(“ [az] +”);

接下來,您必須通過向模式發送消息來為文本創建匹配器
Matcher m = p.matcher(“代碼2學習Java教程”);

注意 :

Pattern和Matcher都沒有公共構造函數,我們通過使用Pattern類中的方法來創建它。

模式類 :模式對象是正則表達式的編譯表示。 Pattern類不提供公共構造函數。 要創建模式,必須首先調用其公共靜態編譯方法之一,然后再返回Pattern對象。 這些方法接受正則表達式作為第一個參數。

Matcher類 :Matcher對象是解釋模式并針對輸入字符串執行匹配操作的引擎。 與Pattern類一樣,Matcher沒有定義公共構造函數。 您可以通過在Pattern對象上調用matcher方法來獲得Matcher對象。

完成上述步驟后,現在有了匹配器m ,我們可以檢查是否找到了匹配項,如果匹配,則從哪個索引位置開始,等等。

如果模式與整個字符串匹配,則m.matches()返回true,否則返回false。
如果模式在字符串開頭匹配,則m.lookingAt()返回true,否則返回false
如果pattern與文本的任何部分匹配,則m.find()返回true

尋找匹配的東西

匹配成功后, m.start()將返回匹配的第一個字符的索引,而m.end()將返回匹配的最后一個字符的索引,再加上一個。

如果未嘗試匹配,或者匹配失敗,則m.start()m.end()將拋出IllegalStateException
–這是一個RuntimeException,因此您不必捕獲它

m.end()返回匹配的最后一個字符的索引似乎很奇怪,但這正是大多數String方法所需要的
–例如,“ 現在是時間.substring(m.start()m.end()
將返回完全匹配的子字符串。

Java程序:

import java.util.regex.*;public class RegexTest {public static void main(String args[]) {String pattern = "[a-z]+";String text = "code 2 learn java tutorial";Pattern p = Pattern.compile(pattern);Matcher m = p.matcher(text);while (m.find()) {System.out.print(text.substring(m.start(), m.end()) + "*");}}
}

輸出 :代碼*學習* java *教程*。

附加方法

如果m是一個匹配器,則

m.replaceFirst( replacement 返回一個新的String,其中與模式匹配的第一個子字符串已被替換
m.replaceAll(replace 返回一個新的String,其中模式匹配的每個子字符串均已替換為replace
m.find( startIndex 從指定的索引開始查找下一個模式匹配 – m.reset()重置此匹配器 – m.reset( newText 重置此匹配器,并為其提供新文本以進行檢查(可以是String,StringBuffer或CharBuffer)

正則表達式語法

下表列出了Java中可用的所有正則表達式元字符語法:

子表達 火柴
^ 匹配行首。
$ 匹配行尾。
匹配除換行符以外的任何單個字符。 使用m選項還可以使其與換行符匹配。
[…] 匹配括號中的任何單個字符。
[^…] 匹配任何不在方括號中的單個字符
\一個 整個字符串的開頭
\ z 整個字符串的結尾
\ Z 整個字符串的結尾,但允許的最后一行終止符除外。
回覆* 匹配0個或多個出現的前一個表達式。
重新+ 匹配1個或多個前一個
回覆? 匹配0或1個出現的前一個表達式。
重新{n} 精確匹配前一個表達式的n次出現。
re {n,} 匹配n個或多個出現的前一個表達式。
re {n,m} 至少匹配n個,最多匹配m個先前的表達式。
a | b 匹配a或b。
(回覆) 對正則表達式進行分組并記住匹配的文本。
(?: 回覆) 對正則表達式進行分組,而無需記住匹配的文本。
(?>重新) 匹配獨立模式而無需回溯。
\ w 匹配單詞字符。
\ W 匹配非單詞字符。
\ s 匹配空格。 等效于[\ t \ n \ r \ f]。
\ S 匹配非空格。
\ d 匹配數字。 相當于[0-9]。
\ D 匹配非數字。
\一個 匹配字符串的開頭。
\ Z 匹配字符串的結尾。 如果存在換行符,則匹配換行符。
\ z 匹配字符串的結尾。
\G 比賽結束點。
\ n 向后引用捕獲組號“ n”
\ b 在方括號外時匹配單詞邊界。 放在方括號內時,匹配退格鍵(0x08)。
\ B 匹配非單詞邊界。
\ n,\ t等 匹配換行符,回車符,制表符等。
\ Q 轉義(引號)所有字符,直到\ E
\ E 結束語以\ Q開頭

參考:來自我們JCG合作伙伴的 Java正則表達式 ? 代碼2學習博客中的Farhan Khwaja。


翻譯自: https://www.javacodegeeks.com/2012/02/regular-expressions-in-java-soft.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373812.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373812.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373812.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AJAX入門——工作原理

理解同步交互和異步交互 舉個例子:普通B/S模式(同步) AJAX技術(異步) * 同步: 提交請求->等待服務器處理->處理完畢返回 這個期間客戶端瀏覽器不能干任何事。 發送方發出數據后,等接收方發回響應以后才發下一個數據包的…

Couldn’t communicate with a helper application.

出現此問題 的情景 我在提交svn之前,在Xcode中的Images.xcassets里添加了文件夾后又刪除了, 但是 在Xcode中提交的時候,左側勾選文件那一欄中 出現了此文件夾及里邊的文件。 解決: 我在conerstore中將此文件夾 remove后&#xff0…

python 復制文件夾內容 并結構一致_Python比較文件夾比另一同名文件夾多出的文件并復制出來的方法...

本文實例講述了Python比較文件夾比另一同名文件夾多出的文件并復制出來的方法。分享給大家供大家參考。具體如下:這個東東本來是做來給公司數據同步用的:新服務器還沒正式啟用,舊的服務器還在使用,每天都有大量圖片傳到舊服務器上…

css控制頁面文字不能被選中user-select:none;

現象:html中可能有些地方不想讓用戶復制文字,或是用a標簽做了個點擊按鈕,點快的時候文字會被選中,很丑,這個時候可以使用下面的方案禁止文字選中。原因:鼠標點快了文字會被選中。解決方案:不同的…

form表單標簽的enctype屬性的作用

Enctype是指定將數據回發到服務器時瀏覽器使用的編碼類型,其編碼類型有以下三種 一、 application/x-www-form-urlencoded 這是通過表單發送數據時默認的編碼類型。我們沒有在from標簽中設置enctype屬性時默認就是application/x-www-form-urlencoded類型的。…

重溫“ Java Sucks”

總覽 關于Java的不足之處(從C開發人員的角度來看)的一個有趣的文檔是在一段時間(大約2000年前)寫的,但是今天許多論點都像十年前一樣真實(或不真實)。 原始的Java Sucks發布。 短消息回顧 Ja…

Android Studio IDE Out of Memory

場景: 嘗試過各種方式,IDE重裝,重新啟動,設置IDE MEMORY大小JDK MEMORY大小都無效 終于在FILE->INVALIDATE CACHES/RESTART 中點擊重新啟動之后問題攻克了。轉載于:https://www.cnblogs.com/yxwkf/p/5128094.html

git 忽略 部分文件夾_git設置忽略文件和目錄

1.登錄gitbash命令端進入本地git庫目錄AdministratorPC201601200946 MINGW32 /d/gitrespository/crmweb (master)2.創建.gitignore3.修改文件,添加忽略正則.idea //忽略.idea文件夾及文件夾下文件*.iml //忽略以.iml結尾的文件【例子】# 忽略*.o和*.a文件*.[oa]# 忽…

在Spring MVC REST應用程序中自動生成WADL

上一次我們學習了WADL的基礎知識 。 語言本身并沒有那么有趣,只寫了一篇有關它的文章,但是本文的標題揭示了為什么我們需要這些知識。 JSR 311的許多實現:JAX-RS:RESTful Web服務的Java API提供了開箱即用的運行時WADL生成&#x…

JSP靜態導入與動態導入

JSP靜態導入(JSP指令標記include) JSP頁面第一次被請求時,會被JSP引擎轉譯成Servlet的Java文件,然后再被編譯成字節碼文件執行。JSP指令標記為JSP頁面轉譯提供整個頁面的相關信息。 include指令用于在JSP頁面靜態插入一個文件&…

關于DJANGO和JAVASCRIPT的時間

最近,實際一些簡單統計時,要到庫里去檢索數據出來用HIGHCHARTS畫圖, 作一個簡單的回照。。 DJANGO用TEMPLATEVIEW來作。專業,正規:) class SAView(TemplateView):template_name version/sa_site.htmlpagin…

git里面的文件怎么刪不掉_.git目錄刪不掉

這樣的情況并非是第一次遇到了,以前總是會覺得這樣的問題只是電腦的錯亂,重啟一下電腦就好了,但是并非每次都需要重啟電腦的,其實簡單的設置一下,這個問題就可以解決了。對了,咱們還是說說這到底是個什么問…

集成框架比較– Spring集成,Mule ESB或Apache Camel

公司之間的數據交換增加了很多。 必須集成的應用程序數量也增加了。 這些接口使用不同的技術,協議和數據格式。 但是,這些應用程序的集成應以標準化的方式建模,有效實現并由自動測試支持 。 JVM環境中提供了三個可滿足這些要求的集成框架&…

Vue.js組件學習

組件可以擴展HTML元素&#xff0c;封裝可重用的HTML代碼&#xff0c;我們可以將組件看作自定義的HTML元素。組件系統提供了一種抽象&#xff0c;讓我們可以使用獨立可復用的小組件來構建大型應用。 一個簡單組件例子(全局注冊&#xff09; <!DOCTYPE html> <html>&…

Winform MD5

1&#xff1a;MD5 http://www.cmd5.com/ 字節數組----字符串 //將字節數組中每個元素按照指定的編碼格式解析成字符串//直接將數組ToString()//將字節數組中的每個元素ToString() //ToString("Params") ToString("x") //可以將十進制字符串轉換為16進制字符…

HTML元素顯示與隱藏

在WEB開發中&#xff0c;前臺HTML中經常需要控制元素的隱藏與顯示&#xff0c;我們最為最常見是二級導航欄&#xff08;通過鼠標的移動來觸發onmouseover&#xff0c;onmouseout事件來實現二級菜單的顯示與隱藏&#xff09;二級菜單的顯示與隱藏。 然而控制元素的影響與顯示有…

書評:JavaFX 2.0:示例介紹

盡管Oracle在JavaOne 2010和JavaOne 2011上對JavaFX的更改使我從懷疑論者轉變為對JavaFX的信奉者 &#xff0c;但是JavaFX愿景的轉變并非沒有缺點 。 特別是&#xff0c;JavaFX圖書市場一直很棘手&#xff0c;因為幾乎所有可用的JavaFX圖書都與1.x版本有關。 在這篇文章中&…

腦子越來越不好使,文字越來越像馱shi

沒辦法&#xff0c;還是記下來。。。轉載于:https://www.cnblogs.com/thorlet/p/5926595.html

python機制_python異常機制個人理解(參考網上資料)

當你的程序中出現異常情況時就需要異常處理。比如當你打開一個不存在的文件時。當你的程序中有一些無效的語句時&#xff0c;Python會提示你有錯誤存在。下面是一個拼寫錯誤的例子&#xff0c;print寫成了Print。Python是大小寫敏感的&#xff0c;因此Python將引發一個錯誤&…

NYOJ 24 素數距離問題

素數距離問題 時間限制&#xff1a;3000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;2描述 現在給出你一些數&#xff0c;要求你寫出一個程序&#xff0c;輸出這些整數相鄰最近的素數&#xff0c;并輸出其相距長度。如果左右有等距離長度素數&#xff0c;則輸出左側的…