day50-正則表達式01

正則表達式015.1正則表達式的作用

正則表達式的便利
在一篇文章中,想要提取相應的字符 , 比如提取文章中的所有英文單詞,提取文章中的所有數字等 。
  1. 傳統方法是:使用遍歷的方式,對文本中的每一個字符進行ASCII碼的對比,如果ASCII碼處于英文字符的范圍,就將其截取下來,再看后面是否有連續的字符,將連續的字符拼接成一個單詞 。這種方式代碼量大,且效率不高 。
  2. 使用正則表達式
package li.regexp;import java.util.regex.Matcher;import java.util.regex.Pattern;//體驗正則表達式的便利public class Regexp_ {public static void main(String[] args) {//假設有如下文本String content = "1995年,互聯網的蓬勃發展給了Oak機會 。業界為了使死板、單調的靜態網頁能夠“靈活”起來," +"急需一種軟件技術來開發一種程序 , 這種程序可以通過網絡傳播并且能夠跨平臺運行 。于是 , 世界各大IT企" +"業為此紛紛投入了大量的人力、物力和財力 。這個時候,Sun公司想起了那個被擱置起來很久的Oak , 并且" +"重新審視了那個用軟件編寫的試驗平臺,由于它是按照嵌入式系統硬件平臺體系結構進行編寫的,所以非常" +"小,特別適用于網絡上的傳輸系統,而Oak也是一種精簡的語言,程序非常?。?適合在網絡上傳輸 。Sun公" +"司首先推出了可以嵌入網頁并且可以隨同網頁在網絡上傳輸的Applet(Applet是一種將小程序嵌入到網" +"頁中進行執行的技術),并將Oak更名為Java 。5月23日,Sun公司在Sun world會議上正式發布Java和" +"HotJava瀏覽器 。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微軟等各大公司都紛紛停止" +"了自己的相關開發項目,競相購買了Java使用許可證,并為自己的產品開發了相應的Java平臺 。";String content2 = "無類域間路由(CIDR,Classless Inter-Domain Routing)地址根據網絡拓撲來分配,可以" +"將連續的一組網絡地址分配給一家公司,并使整組地址作為一個網絡地址(比如使用超網技術) , 在外部路由表上" +"只有一個路由表項 。這樣既解決了地址匱乏問題 , 又解決了路由表膨脹的問題 。另外,CIDR還將整個世界分為四" +"個地區,給每個地區分配了一段連續的C類地址,分別是:歐洲(194.0.0.0~195.255.255.255)、北美(19" +"8.0.0.0~199.255.255.255)、中南美(200.0.0.0~201.255.255.255)和亞太(202.0.0.0~203.2" +"55.255.255) 。這樣,當一個亞太地區以外的路由器收到前8位為202或203的數據報時,它只需要將其放到通向亞" +"太地區的路由即可,而對后24位的路由則可以在數據報到達亞太地區后再進行處理,這樣就大大緩解了路由表膨脹的問題";//正則表達式來完成// (1)先創建一個Pattern對象,模式對象,可以理解成就是一個正則表達式對象//Pattern pattern = Pattern.compile("[a-zA-Z]+");//提取文章中的所有英文單詞//Pattern pattern = Pattern.compile("[0-9]+");//提取文章中的所有數字//Pattern pattern = Pattern.compile("([0-9]+)|([a-zA-Z]+)");//提取文章中的所有的英文單詞和數字Pattern pattern = Pattern.compile("\\d+\\.\\d+\\.\\d+\\.\\d+");//提取文章中的ip地址// (2)創建一個匹配器對象// 理解:就是 matcher 匹配器按照pattern(模式/樣式),到content文本中去匹配// 找到就返回true,否則就返回false(如果返回false就不再匹配了)Matcher matcher = pattern.matcher(content2);// (3)可以開始循環匹配while (matcher.find()) {//匹配到的內容和文本,放到 m.group(0)System.out.println("找到:" + matcher.group(0));}}}提取所有英文單詞:
day50-正則表達式01

文章插圖

day50-正則表達式01

文章插圖
提取所有數字:
day50-正則表達式01

文章插圖
提取ip地址:
day50-正則表達式01

文章插圖
正則表達式是處理文本的利器
  • 再提出幾個問題
    • 在程序中如何驗證用戶輸入的郵件信息是否符合電子郵件的格式?
    • 如何驗證輸入的電話號碼是符合手機號格式?
為了解決上述問題 , java提供了正則表達式技術(regular expression / regexp),專門用于處理類似的文本問題 。簡單地說,正則表達式是對字符串執行 模式匹配 的技術 。
5.2基本介紹
  • 介紹
  1. 一個正則表達式 , 就是用某種模式去匹配字符串的一個公式 。
    它們看上去奇怪而復雜,但經過練習后,你就會發現這些復雜的表達式寫起來還是相當簡單的 。而且,一旦弄懂它們,就能將數小時辛苦而且容易出錯的文本處理工作縮短在幾分鐘甚至幾秒內完成 。

    推薦閱讀