中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

如何在正確的在JAVA中使用正則表達(dá)式-創(chuàng)新互聯(lián)

這篇文章給大家介紹如何在正確的在JAVA中使用正則表達(dá)式,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有唐縣免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

Java是什么

Java是一門面向?qū)ο缶幊陶Z言,可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序。

正則表達(dá)式語法

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

[]

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

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

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

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

簡寫意義
.匹配除"\r\n"之外的任何單個(gè)字符。
\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中**\\** 表示其他語言的一個(gè)\,所以上面的在java中均需要寫成\\d、\\D等等。

{}

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

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

()

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

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

JAVA寫法

模板

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

例子

描述

根據(jù)時(shí)間精度的不同,可能出現(xiàn)以下四種認(rè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ā)送時(shí)間

‘y' 代表一位年份數(shù)字,‘m' 代表一位月份數(shù)字,‘d' 代表一位日期數(shù)字,‘h' 代表一位小時(shí)數(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。

運(yùn)行結(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時(shí),輸出如下:

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

ss因?yàn)樵谠摳袷街袥]有所以為空。

例子改

描述

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

根據(jù)時(shí)間精度的不同,可能出現(xiàn)以下四種認(rè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 是新加的域,表示地點(diǎn),由英文字母組成,對大小寫敏感,即 Beijing 和 beijing 視為不一樣的地點(diǎn)

寫法

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}):))?必須為嵌套的形式,否則匹配時(shí)會(huì)出現(xiàn)把mimi匹配成ss的錯(cuò)誤(因?yàn)閮烧叩钠ヅ涓袷较嗤?,先匹配給了ss,但是嵌套之后就不會(huì)出現(xiàn)這種情況)。

運(yù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

關(guān)于如何在正確的在JAVA中使用正則表達(dá)式就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

標(biāo)題名稱:如何在正確的在JAVA中使用正則表達(dá)式-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://www.rwnh.cn/article26/dgsccg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、軟件開發(fā)、服務(wù)器托管、網(wǎng)站制作、動(dòng)態(tài)網(wǎng)站、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
共和县| 宝兴县| 永城市| 常德市| 太湖县| 大城县| 志丹县| 洛隆县| 上蔡县| 宜良县| 东宁县| 吉林市| 晋江市| 长葛市| 监利县| 黄平县| 洛隆县| 阳春市| 施秉县| 沐川县| 甘德县| 泾源县| 左权县| 上蔡县| 翁源县| 马鞍山市| 临海市| 邛崃市| 独山县| 榕江县| 德清县| 台中市| 蒙阴县| 固原市| 临漳县| 靖边县| 西和县| 崇义县| 辉南县| 长宁县| 图片|