最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA正則表達式的基本使用教程

 更新時間:2021年03月03日 17:06:13   作者:_YiFei  
這篇文章主要給大家介紹了關(guān)于JAVA正則表達式的基本使用教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

正則表達式語法

最簡單的正則表達式就是字符串,比如hello world也是一個正則表達式,匹配"hello world"字符串。在這基礎(chǔ)上我們加入其他符號表示,以滿足我們匹配一定格式的字符串而不是與正則表達式一模一樣的字符串,這些符號可以大致分為[]、{}、(),而其他的一些符號(如.,+,*,\\d等等)其實都可以認為是他們的簡寫形式。

[]

[]表示匹配一個在[]中包含的任一字符,如[abc]表示匹配a或者b或者c。

可以使用-來表示一個字符區(qū)間,[a-c]與[abc]是等效的;同時可以寫多個區(qū)間,也可以寫完區(qū)間后再加入字符,如[a-z0-9A]表示匹配a-z或者0-9或者A中的任一字符;

可以使用^來取補集,即[^a-c]表示匹配除了abc的其他任何字符、[^0-9]表示匹配除了數(shù)字的任何字符、[^a]表示匹配除了a的其他任何字符;

一些與[]等效的簡寫方法:

簡寫 意義
. 匹配除"\r\n"之外的任何單個字符。
\d 數(shù)字字符匹配。等效于 [0-9]。
\D 非數(shù)字字符匹配。等效于 [^0-9]。
\s 匹配任何空白字符,包括空格、制表符、換頁符等。與 [ \f\n\r\t\v] 等效。
\S 匹配任何非空白字符。與 [^ \f\n\r\t\v] 等效。
\w 匹配任何字類字符,包括下劃線。與[A-Za-z0-9_]等效。
\W 與任何非單詞字符匹配。與[^A-Za-z0-9_]等效。

另外,由于java中**\\** 表示其他語言的一個\,所以上面的在java中均需要寫成\\d、\\D等等。

{}

{}表示對其前面的字符或子表達式匹配的次數(shù)。

表達式 意義
{n} n 是非負整數(shù)。正好匹配 n 次。如o{2}匹配兩次o
{n,} n 是非負整數(shù)。至少匹配 n 次。
{n,m} mn 是非負整數(shù),其中 n <= m。匹配至少 n 次,至多 m 次。
表達式 意義
* 零次或多次匹配前面的字符或子表達式,等效于 {0,}。
+ 一次或多次匹配前面的字符或子表達式, 等效于 {1,}。
? 零次或一次匹配前面的字符或子表達式, 等效于 {0,1}。

()

()表示一個捕獲組,由此可以使用()來將一個表達式拆分為多個組,實現(xiàn)將一個字符串中需要的信息提取出來。在()中的一開始加入?<name>可以實現(xiàn)對組命名,從而更方便地提取信息。

如(?[A-Za-z]+)表示一個至少由一個字母組成的人名,在獲取匹配到的人名時只需要用matcher.group("name")即可得到匹配結(jié)果。

JAVA寫法

模板

String pattern = "[a-z]+";//正則表達式
Pattern r = Pattern.compile(pattern);//將表達式編譯
Matcher matcher = r.matcher(text);//將text字符串作為匹配的字符串
matcher.find();//匹配
value1 = matcher.group("value1");//提取信息

例子

描述

根據(jù)時間精度的不同,可能出現(xiàn)以下四種認定為正確的郵件信息格式:

username@domain-yyyy-mm-dd

例:lethean@buaa.edu.cn-2020-12-02

username@domain-yyyy-mm-dd-hh

例:myname-lethean@buaa.edu.cn-2020-12-02-15

username@domain-yyyy-mm-dd-hh:mimi

例:Lethean@buaa.edu.cn-2020-12-02-15:01

username@domain-yyyy-mm-dd-hh:mimi:ss

例:myname--lethean@buaa.edu.cn-2020-12-20-15:01:20

其中

username@domain 為

郵件發(fā)送者的郵箱地址

username 為用戶名,domain 為域名
yyyy-mm-dd / yyyy-mm-dd-hh / yyyy-mm-dd-hh:mimi / yyyy-mm-dd-hh:mimi:ss 為

發(fā)送時間

‘y' 代表一位年份數(shù)字,‘m' 代表一位月份數(shù)字,‘d' 代表一位日期數(shù)字,‘h' 代表一位小時數(shù)字,‘mi' 代表一位分鐘數(shù)字,‘s' 代表一位秒數(shù)數(shù)字
username 為只包含大小寫字母、- 的長度不為零的字符串,對于大小寫不敏感。

domain 為只包含大小寫字母、數(shù)字、. 的長度不為零的字符串,對大小寫敏感。

寫法

String pattern = "(?<username>[A-Za-z-]+)@(?<domain>[A-Za-z0-9.]+)-(?<yyyy>\\d{4})-(?<mm>\\d{2})-(?<dd>\\d{2})(-)?(?<hh>\\d{2})?(:)?(?<mimi>\\d{2})?(:)?(?<ss>\\d{2})?";
  String text = "myname--lethean@buaa.edu.cn-2020-12-20-15:01:20";
  Pattern r = Pattern.compile(pattern);
  Matcher matcher = r.matcher(text);
  if (matcher.find()) {
   System.out.println("username:"+matcher.group("username"));
   System.out.println("domain:"+matcher.group("domain"));
   System.out.println("yyyy:"+matcher.group("yyyy"));
   System.out.println("mm:"+matcher.group("mm"));
   System.out.println("dd:"+matcher.group("dd"));
   System.out.println("hh:"+matcher.group("hh"));
   System.out.println("mimi:"+matcher.group("mimi"));
   System.out.println("ss:"+matcher.group("ss"));
  }

將text換成4種格式的郵箱均可得到正確結(jié)果,不存在的(hh、mimi、ss可能不存在)則為null。

運行結(jié)果如下:

username:myname--lethean
domain:buaa.edu.cn
yyyy:2020
mm:12
dd:20
hh:15
mimi:01
ss:20

如果以第3種格式輸入,即text為Lethean@buaa.edu.cn-2020-12-02-15:01時,輸出如下:

username:Lethean
domain:buaa.edu.cn
yyyy:2020
mm:12
dd:02
hh:15
mimi:01
ss:null

ss因為在該格式中沒有所以為空。

例子改

描述

郵件信息輸入格式改為:(ss:mimi:hh-)dd-mm-yyyy-username@domain-place

根據(jù)時間精度的不同,可能出現(xiàn)以下四種認定為正確的郵件信息格式:

dd-mm-yyyy-username@domain-place

例:02-12-2020-abc@buaa.edu.cn-Wuhu

hh-dd-mm-yyyy-username@domain-place

例:03-02-12-2020-abc@buaa.edu.cn-wuhu

mimi:hh-dd-mm-yyyy-username@domain-place

例:00:03-02-12-2020-abc@buaa.edu.cn-Wuhu

ss:mimi:hh-dd-mm-yyyy-username@domain-place

例:01:00:03-02-12-2020-abc@buaa.edu.cn-wuhu

place 是新加的域,表示地點,由英文字母組成,對大小寫敏感,即 Beijing 和 beijing 視為不一樣的地點

寫法

String pattern = "(((?<ss>\\d{2}):)?((?<mimi>\\d{2}):))?((?<hh>\\d{2})-)?(?<dd>\\d{2})-(?<mm>\\d{2})-(?<yyyy>\\d{4})-(?<username>[A-Za-z-]+)@(?<domain>[A-Za-z0-9.]+)-(?<place>[A-Za-z]+)";
String text = "01:11:03-02-12-2020-abc@buaa.edu.cn-wuhu";
Pattern r = Pattern.compile(pattern);
Matcher matcher = r.matcher(text);
if (matcher.find()) {
 System.out.println("username:"+matcher.group("username"));
 System.out.println("domain:"+matcher.group("domain"));
 System.out.println("yyyy:"+matcher.group("yyyy"));
 System.out.println("mm:"+matcher.group("mm"));
 System.out.println("dd:"+matcher.group("dd"));
 System.out.println("hh:"+matcher.group("hh"));
 System.out.println("mimi:"+matcher.group("mimi"));
 System.out.println("ss:"+matcher.group("ss"));
 System.out.println("place:"+matcher.group("place"));
}

注意前面的(((?<ss>\\d{2}):)?((?<mimi>\\d{2}):))?必須為嵌套的形式,否則匹配時會出現(xiàn)把mimi匹配成ss的錯誤(因為兩者的匹配格式相同,先匹配給了ss,但是嵌套之后就不會出現(xiàn)這種情況)。

運行結(jié)果如下:

username:abc
domain:buaa.edu.cn
yyyy:2020
mm:12
dd:02
hh:03
mimi:11
ss:01
place:wuhu

如果將text改為11:03-02-12-2020-abc@buaa.edu.cn-wuhu,輸出如下,ss不匹配。

username:abc
domain:buaa.edu.cn
yyyy:2020
mm:12
dd:02
hh:03
mimi:11
ss:null
place:wuhu

總結(jié)

到此這篇關(guān)于JAVA正則表達式使用的文章就介紹到這了,更多相關(guān)JAVA正則表達式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于SpringBoot2.0版本與老版本的區(qū)別

    基于SpringBoot2.0版本與老版本的區(qū)別

    這篇文章主要介紹了SpringBoot2.0版本與老版本的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 使用maven運行Java Main的三種方法解析

    使用maven運行Java Main的三種方法解析

    這篇文章主要介紹了使用maven運行Java Main的三種方式的相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • SpringMVC如何訪問WEB-INF jsp過程解析

    SpringMVC如何訪問WEB-INF jsp過程解析

    這篇文章主要介紹了SpringMVC如何訪問WEB-INF jsp過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • 模擬Mybatis的實現(xiàn)方法

    模擬Mybatis的實現(xiàn)方法

    本文通過實例代碼給大家分享了模擬Mybatis的實現(xiàn)方法,需要的朋友參考下吧
    2017-09-09
  • mybatis原理概述入門教程

    mybatis原理概述入門教程

    這篇文章主要介紹了在今天這篇博文中,我將要介紹一下mybatis的框架原理,以及mybatis的入門程序,實現(xiàn)用戶的增刪改查,她有什么優(yōu)缺點以及mybatis和hibernate之間存在著怎么樣的關(guān)系,大家這些問題一起通過本文學習吧
    2016-09-09
  • springboot使用@Slf4j進行日志的記錄步驟詳解

    springboot使用@Slf4j進行日志的記錄步驟詳解

    這篇文章主要介紹了springboot使用@Slf4j進行日志的記錄,使用@Slf4j的注解進行日志記錄非常方便,本文給大家分享操作步驟,需要的朋友可以參考下
    2023-08-08
  • 總結(jié)十個實用但偏執(zhí)的Java編程技術(shù)

    總結(jié)十個實用但偏執(zhí)的Java編程技術(shù)

    Java是世界上最流行的程序語言,從1995年問世以來,Java的生態(tài)系統(tǒng)在一直在蓬勃的發(fā)展著。下面這篇文章主要總結(jié)了十個實用但偏執(zhí)的Java編程技術(shù),需要的朋友可以參考借鑒,下面來一起學習學習吧。
    2017-01-01
  • Java.lang.Long.parseLong()方法詳解及示例

    Java.lang.Long.parseLong()方法詳解及示例

    這個java.lang.Long.parseLong(String s) 方法解析字符串參數(shù)s作為有符號十進制長,下面這篇文章主要給大家介紹了關(guān)于Java.lang.Long.parseLong()方法詳解及示例的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Java自定義實現(xiàn)equals()方法過程解析

    Java自定義實現(xiàn)equals()方法過程解析

    這篇文章主要介紹了Java自定義實現(xiàn)equals()方法過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • 在java poi導入Excel通用工具類示例詳解

    在java poi導入Excel通用工具類示例詳解

    這篇文章主要給大家介紹了關(guān)于在java poi導入Excel通用工具類的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09

最新評論

沾益县| 宝兴县| 谷城县| 张家港市| 龙江县| 资兴市| 潞城市| 武威市| 兴城市| 珲春市| 平武县| 巴南区| 平乐县| 民勤县| 伊宁县| 靖远县| 保定市| 英超| 涿鹿县| 甘泉县| 永宁县| 江城| 扬州市| 普陀区| 衡水市| 治县。| 鄂尔多斯市| 武夷山市| 肇源县| 汉沽区| 蓝田县| 安溪县| 文化| 灵台县| 绥芬河市| 鄂伦春自治旗| 宁城县| 江口县| 西峡县| 黔南| 太康县|