詳解Java中的scala正則表達(dá)式
Scala 通過(guò) scala.util.matching 包中的 Regex 類(lèi)來(lái)支持正則表達(dá)式。
eg:使用正則表達(dá)式查找單詞 Scala

實(shí)例中使用 String 類(lèi)的 r() 方法構(gòu)造了一個(gè)Regex對(duì)象。(也可直接new一個(gè)Regex對(duì)象實(shí)例)然后使用 findFirstIn 方法找到首個(gè)匹配項(xiàng)。如果需要查看所有的匹配項(xiàng)可以使用 findAllIn 方法。
可以使用 mkString( ) 方法來(lái)連接正則表達(dá)式匹配結(jié)果的字符串,并可以使用管道(|)來(lái)設(shè)置不同的模式:

如果需要將匹配的文本替換為指定的關(guān)鍵詞,可以使用 replaceFirstIn( ) 方法來(lái)替換第一個(gè)匹配項(xiàng),使用 replaceAllIn( ) 方法替換所有匹配項(xiàng)

正則表達(dá)式
Scala 的正則表達(dá)式繼承了 Java 的語(yǔ)法規(guī)則,Java 則大部分使用了 Perl 語(yǔ)言的規(guī)則。
下表給出了常用的一些正則表達(dá)式規(guī)則:
Java 的語(yǔ)法規(guī)則,Java 則大部分使用了 Perl 語(yǔ)言的規(guī)則。
下表給出了常用的一些正則表達(dá)式規(guī)則:
表達(dá)式 匹配規(guī)則
^ 匹配輸入字符串開(kāi)始的位置。
$ 匹配輸入字符串結(jié)尾的位置。
. 匹配除"\r\n"之外的任何單個(gè)字符。
[...] 字符集。匹配包含的任一字符。例如,"[abc]"匹配"plain"中的"a"。
[^...] 反向字符集。匹配未包含的任何字符。例如,"[^abc]"匹配"plain"中"p","l","i","n"。
\\A 匹配輸入字符串開(kāi)始的位置(無(wú)多行支持)
\\z 字符串結(jié)尾(類(lèi)似$,但不受處理多行選項(xiàng)的影響)
\\Z 字符串結(jié)尾或行尾(不受處理多行選項(xiàng)的影響)
re* 重復(fù)零次或更多次
re+ 重復(fù)一次或更多次
re? 重復(fù)零次或一次
re{ n} 重復(fù)n次
re{ n,}
re{ n, m} 重復(fù)n到m次
a|b 匹配 a 或者 b
(re) 匹配 re,并捕獲文本到自動(dòng)命名的組里
(?: re) 匹配 re,不捕獲匹配的文本,也不給此分組分配組號(hào)
(?> re) 貪婪子表達(dá)式
\\w 匹配字母或數(shù)字或下劃線或漢字
\\W 匹配任意不是字母,數(shù)字,下劃線,漢字的字符
\\s 匹配任意的空白符,相等于 [\t\n\r\f]
\\S 匹配任意不是空白符的字符
\\d 匹配數(shù)字,類(lèi)似 [0-9]
\\D 匹配任意非數(shù)字的字符
\\G 當(dāng)前搜索的開(kāi)頭
\\n 換行符
\\b 通常是單詞分界位置,但如果在字符類(lèi)里使用代表退格
\\B 匹配不是單詞開(kāi)頭或結(jié)束的位置
\\t 制表符
\\Q 開(kāi)始引號(hào):\Q(a+b)*3\E 可匹配文本 "(a+b)*3"。
\\E 結(jié)束引號(hào):\Q(a+b)*3\E 可匹配文本 "(a+b)*3"。
正則表達(dá)式實(shí)例
實(shí)例 描述
. 匹配除"\r\n"之外的任何單個(gè)字符。
[Rr]uby 匹配 "Ruby" 或 "ruby"
rub[ye] 匹配 "ruby" 或 "rube"
[aeiou] 匹配小寫(xiě)字母 :aeiou
[0-9] 匹配任何數(shù)字,類(lèi)似 [0123456789]
[a-z] 匹配任何 ASCII 小寫(xiě)字母
[A-Z] 匹配任何 ASCII 大寫(xiě)字母
[a-zA-Z0-9] 匹配數(shù)字,大小寫(xiě)字母
[^aeiou] 匹配除了 aeiou 其他字符
[^0-9] 匹配除了數(shù)字的其他字符
\\d 匹配數(shù)字,類(lèi)似: [0-9]
\\D 匹配非數(shù)字,類(lèi)似: [^0-9]
\\s 匹配空格,類(lèi)似: [ \t\r\n\f]
\\S 匹配非空格,類(lèi)似: [^ \t\r\n\f]
\\w 匹配字母,數(shù)字,下劃線,類(lèi)似: [A-Za-z0-9_]
\\W 匹配非字母,數(shù)字,下劃線,類(lèi)似: [^A-Za-z0-9_]
ruby? 匹配 "rub" 或 "ruby": y 是可選的
ruby* 匹配 "rub" 加上 0 個(gè)或多個(gè)的 y。
ruby+ 匹配 "rub" 加上 1 個(gè)或多個(gè)的 y。
\\d{3} 剛好匹配 3 個(gè)數(shù)字。
\\d{3,} 匹配 3 個(gè)或多個(gè)數(shù)字。
\\d{3,5} 匹配 3 個(gè)、4 個(gè)或 5 個(gè)數(shù)字。
\\D\\d+ 無(wú)分組: + 重復(fù) \d
(\\D\\d)+/ 分組: + 重復(fù) \D\d 對(duì)
([Rr]uby(, )?)+ 匹配 "Ruby"、"Ruby, ruby, ruby",等等
---------------------
參照:http://www.runoob.com/scala/scala-regular-expressions.html
注意:上表中的每個(gè)字符使用了兩個(gè)反斜線。這是因?yàn)?em>在 Java 和 Scala 中字符串中的反斜線是轉(zhuǎn)義字符。所以若要輸出 .\.,需要在字符串中寫(xiě)成 .\\. 來(lái)獲取一個(gè)反斜線。
eg:

總結(jié)
以上所述是小編給大家介紹的Java中的scala正則表達(dá)式,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
Python使用正則表達(dá)式去除(過(guò)濾)HTML標(biāo)簽提取文字功能
這篇文章主要介紹了Python使用正則表達(dá)式去除(過(guò)濾)HTML標(biāo)簽提取文字,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07
使用JavaScript正則表達(dá)式如何去掉雙引號(hào)
本文給大家介紹使用javascript正則表達(dá)式過(guò)濾雙引號(hào),代碼非常簡(jiǎn)單,具有參考借鑒價(jià)值,對(duì)js 正則表達(dá)式 雙引號(hào)相關(guān)知識(shí)感興趣的朋友快來(lái)看看吧2015-10-10
一串字字符中多個(gè)逗號(hào)替換為一個(gè) 既標(biāo)準(zhǔn)分隔符(正則表達(dá)式)
一串字字符中多個(gè)逗號(hào)轉(zhuǎn)換為一個(gè),既標(biāo)準(zhǔn)分隔符(正則表達(dá)式),借助上一篇文章正則表達(dá)式快速入門(mén),來(lái)完成了這個(gè)轉(zhuǎn)換過(guò)程2012-11-11
關(guān)于正則表達(dá)式基本語(yǔ)法的應(yīng)用詳解(必看篇)
下面小編就為大家?guī)?lái)一篇關(guān)于正則表達(dá)式基本語(yǔ)法的應(yīng)用詳解(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
正則表達(dá)式 \D 元字符(等價(jià)于"[^0-9]")
\D元字符可以匹配非數(shù)字字符,等價(jià)于"[^0-9]"。這篇文章主要介紹了正則表達(dá)式 \D 元字符的相關(guān)資料,需要的朋友可以參考下2018-01-01
VSCode正則表達(dá)式匹配多行實(shí)戰(zhàn)案例
正則表達(dá)式是一種強(qiáng)大的文本模式匹配工具,可以用來(lái)搜索和修改文本,下面這篇文章主要給大家介紹了關(guān)于VSCode正則表達(dá)式匹配多行實(shí)戰(zhàn)案例的相關(guān)資料,需要的朋友可以參考下2024-03-03
javascript正則表達(dá)式RegExp入門(mén)圖文教程
正則表達(dá)式又叫作規(guī)則表達(dá)式Regular Expression 即 RegExp,是計(jì)算機(jī)科學(xué)的一個(gè)概念,它常被用來(lái)搜索、替換那些符合某個(gè)模式的文本2020-02-02
php中常用的正則表達(dá)式的介紹及應(yīng)用實(shí)例代碼
在編寫(xiě)處理字符串的程序或網(wǎng)頁(yè)時(shí),經(jīng)常會(huì)有查找符合某些復(fù)雜規(guī)則的字符串的需要。正則表達(dá)式就是用于描述這些規(guī)則的語(yǔ)法。2009-12-12

