1樓:小妥
首先這個正規表示式寫的不規範。使用c++轉義字元轉義前請在正則語句前後加上雙引號謝謝。這個正則的含義為匹配類似“1:
23:45”這樣的資料,其中第一個1可以換成0~9,第二個23可以換成00~99,第三個也可以換成00~99。目測有點像匹配時間用的,但匹配時間不應該寫的這麼簡單
2樓:匿名使用者
但這個表示式來講是可以不用的,沒有意義。
\d就可以的,就是2位以上的數 代表前面表示式的2個或以上 \d為數字所以就是2個以上的數字,而這個算式中的數字都滿足。
正規表示式 .*? 是什麼意思啊?
3樓:樂觀小山
表示式 .* 就是單個字元匹配任意次,即貪婪匹配。 表示式 .*? 是滿足條件的情況只匹配一次,即最小匹配.
舉例介紹:
如:懶惰模式正則:
src=".*?"
結果:src="test.jpg"
擴充套件資料正規表示式特殊字元及其含義:
1、\cx
匹配由x指明的控制字元。例如, \cm 匹配一個 control-m 或回車符。x 的值必須為 a-z 或 a-z 之一。否則,將 c 視為一個原義的 ‘c’ 字元。
2、\f
匹配一個換頁符。等價於 \x0c 和 \cl。
3、\n
匹配一個換行符。等價於 \x0a 和 \cj。
4、\r
匹配一個回車符。等價於 \x0d 和 \cm。
5、\s
匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。
6、\s
匹配任何非空白字元。等價於 [^ \f\n\r\t\v]。
7、\t
匹配一個製表符。等價於 \x09 和 \ci。
8、\v
匹配一個垂直製表符。等價於 \x0b 和 \ck。
4樓:喬芝英多凡
正規表示式由一些普通字元和一些元字元(metacharacters)組成。普通字元包括大小寫的字母和數字,而元字元則具有特殊的含義,我們下面會給予解釋。
在最簡單的情況下,一個正規表示式看上去就是一個普通的查詢串。例如,正規表示式"testing"中沒有包含任何元字元,,它可以匹配"testing"和"123testing"等字串,但是不能匹配"testing"。
要想真正的用好正規表示式,正確的理解元字元是最重要的事情。下表列出了所有的元字元和對它們的一個簡短的描述。
5樓:匿名使用者
.* 很簡單,就是一個字元迴圈0次或者很多次多一個?在後面,意思是 懶惰迴圈
舉一個例子你就明白了
對於字串 aaaaaaa
a* 一下子很勤勞的把整個字串都匹配完了,結果是aaaaaaa
a*? 很懶,發現匹配字串中一個a後,就完成了匹配,就不用再繼續嘗試下去了,因此就第一次只匹配
a,然後進行第二輪匹配了,還是隻吃一個a就結束。因為他懶嘛
6樓:匿名使用者
?的一個用法1樓已經說了,匹配0次或1次。
但是?還有第二個含義,作為正則的懶惰模式。
正則有兩種模式,一種為貪婪模式(預設),另外一種為懶惰模式,以下為例:
(abc)dfe(gh)
對上面這個字串使用(.*)將會匹配整個字串,因為正則預設是儘可能多的匹配。
雖然(abc)滿足我們的表示式,但是(abc)dfe(gh)也同樣滿足,所以正則會匹配多的那個。
如果我們只想匹配(abc)和(gh)就需要用到以下的表示式
(.*?)
在重複元字元*或者+後面跟一個?,作用就是在滿足的條件下儘可能少匹配。
7樓:倒黴熊
.點 匹配任何單個字元。例如正規表示式r.t匹配這些字串:rat、rut、r t,但是不匹配root。
* 匹配0或多個正好在它之前的那個字元。例如正規表示式。*意味著能夠匹配任意數量的任何字元。
? 匹配0或1個正好在它之前的那個字元。注意:這個元字元不是所有的軟體都支援的。
8樓:匿名使用者
就是檢查字串是否符合某個格式
看我的例子
public class judge
if(str2.matches(a))if(str3.matches(a))else}
9樓:手機使用者
.點 匹配任何單個字元。
* 匹配0或多個正好在它之前的那個字元。就是0到n次? 匹配0或1個正好在它之前的那個字元。(之前!!注意:這個元字元不是所有的軟體都支援的。)
例如113366 11(.*?)66 匹配後就是33
10樓:p為夢停留
正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯。
它是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯。正規表示式是一種文字模式,模式描述在搜尋文字時要匹配的一個或多個字串。
11樓:阿炎的情感小屋
正規表示式,又稱規則表示式。是電腦科學的一個概念。
正規表示式通常被用來檢索、替換那些符合某個模式(規則)的文字。許多程式設計語言都支援利用正規表示式進行字串操作。例如,在perl中就內建了一個功能強大的正規表示式引擎。
正規表示式這個概念最初是由unix中的工具軟體(例如sed和grep)普及開的。
正規表示式通常縮寫成“regex”,單數有regexp、regex,複數有regexps、regexes、regexen。
擴充套件資料
正規表示式的作用:
1、匹配
檢查字串是否符合正規表示式中的規則,有一次不匹配,則返回false。如:
string str="abc";
string reg="[a-za-z]\\d?";//次表示式表示字串的第一位只能是字母,第二位只能是數字或沒有boolean flag=str.matches(reg);//返回結果為true。
2、切割
所謂切割,即是按一定的規則將字串分割成多個子字串,如:
string str="zhangsan,lishi,wangwu"。
string reg=",";//表示以逗號作為切割符。
string arr=str.split(reg);//返回結果為。
3、替換
即將字串中符合規則的字元替換成指定字元,如:
string str="sfhjhfh136hjasdf73466247fsjha8437482jfjsfh746376"。
str.replaceall("\\d","#");//表示將連續出現三個或三個以上的數字替換成“#”。
12樓:樂觀小山
正規表示式,又稱規則表示式。(英語:regular expression,在**中常簡寫為regex、regexp或re),電腦科學的一個概念。
正規表示式通常被用來檢索、替換那些符合某個模式(規則)的文字。
許多程式設計語言都支援利用正規表示式進行字串操作。例如,在perl中就內建了一個功能強大的正規表示式引擎。
正規表示式這個概念最初是由unix中的工具軟體(例如sed和grep)普及開的。正規表示式通常縮寫成“regex”,單數有regexp、regex,複數有regexps、regexes、regexen。
擴充套件資料
正規表示式應用——例項應用
1.驗證使用者名稱和密碼:("^[a-za-z]\w$")正確格式:"[a-z][a-z]_[0-9]"組成,並且第一個字必須為字母6~16位;
2.驗證**號碼:("^(\d-)\d$")正確格式:***/***x-******x/******xx;
3.驗證手機號碼:"^1[3|4|5|7|8][0-9]$";
4.驗證身份證號(15位):"\d[[0-9],0-9xx]",(18位):"\d(\d|x|x)";
6.只能輸入由數字和26個英文字母組成的字串:("^[a-za-z0-9]+$");
7.整數或者小數:^[0-9]+([.][0-9]+)$
8.只能輸入數字:"^[0-9]*$"。
9.只能輸入n位的數字:"^\d$"。
13樓:迷人的小
正規表示式(regular expression)描述了一種字串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。
正規表示式是一種可以用於模式匹配和替換的規範,一個正規表示式就是由普通的字元(例如字元a到z)以及特殊字元(元字元)組成的文字模式,它用以描述在查詢文字主體時待匹配的一個或多個字串。
正規表示式作為一個模板,將某個字元模式與所搜尋的字串進行匹配。每一門計算機程式語言,都支援正規表示式。正規表示式能夠進行資料隱藏,資料採集,資料過濾和資料驗證。
14樓:匿名使用者
簡單的說就是,用一小段簡單的各種字元的組合,即叫做 正規表示式,去實現複雜的:
字串匹配,查詢你到你所需要的內容,以便後期提取出來你所要的內容。
這個聽起來很簡單,但是很多現實的應用中,所要處理的字串有千千萬萬種,各種複雜的字元,而且每個人的需求有無窮盡種,需要提取出的內容也是無窮多。而如果手動處理,寫普通的if else語句去一點點判斷字串是否相等,則是無法實現的。
而用正則,就可以實現如此多的,繁雜的,極度複雜的,各種需求。
更多的內容,可以看看我所總結的:
正規表示式學習心得
再舉幾個實際的例子:
notepad++正規表示式替換舉例1:一次性替換多個檔案的字尾
notepad++正規表示式替換舉例2:一次性替換多個路徑
notepad++正規表示式替換舉例3:一次性替換多個listitem為sect4
notepad++正規表示式替換舉例4:給每一行都新增addicon的字首
notepad++正規表示式替換舉例5:給book的標題和地址新增html**
15樓:匿名使用者
你前面的感嘆號是不是之前有個問號?
(?!pattern)
負向預查,在任何不匹配 pattern
的字串開始處匹配查詢字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如'windows (?!95|98|nt|2000)' 能匹配
"windows 3.1" 中的 "windows",但不能匹配 "windows 2000" 中的
"windows"。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜尋,而不是從包含預查的字元之後開始
(?:pattern)
匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行儲存供以後使用。這在使用
"或" 字元 (|) 來組合一個模式的各個部分是很有用。例如, 'industr(?:y|ies) 就是一個比 'industry|industries'
更簡略的表示式。
?當該字元緊跟在任何一個其他限制符 (*, +, ?, , , )
後面時,匹配模式是非貪婪的。非貪婪模式儘可能少的匹配所搜尋的字串,而預設的貪婪模式則儘可能多的匹配所搜尋的字串。例如,對於字串 "oooo",'o+?'
將匹配單個 "o",而 'o+' 將匹配所有 'o'。
正規表示式是表示什麼,正規表示式 是什麼意思
比方說我需要判斷一個串是不是一個郵箱,你需要判斷它是是不是由字母數字下劃線組成,還包含一個 且只有一個 而且這個 不能在最前最後,串的最後面需要以.com來結尾,而且這個.com還不能緊跟在 後面,balabala一大堆的規則,這麼多要是用if來判斷實在是太麻煩了吧。那麼你寫一個正規表示式可以一下子...
正規表示式d g什麼意思,正規表示式 d d 的意思
g 最前面的 與最後面的 是分隔符,表示正規表示式的開始與結束。最後的 g 標誌表示正規表示式使用的global 全域性 的狀態。使用 global 標誌表明在被查詢的字串中搜尋操作將查詢所有符合的項,而不僅僅是第一個。這也被稱為全域性匹配。相關的標誌還有i ignorecase,表示忽略大小寫 m...
正規表示式匹配什麼,正規表示式中的 ?或 是什麼意思
使用 其中 是轉義字元,因為 是正則表示式中的特殊符號,所以需要使用 進行轉義。特殊字元 1 匹配前面的子表示式一次或多次。要匹配 字元,使用 2 將下一個字元標記為或特殊字元 或原義字元 或向後引用 或八進位制轉義符。例如,n 匹配字元 n n 匹配換行符。序列 匹配 而 則匹配 3 指明兩項之間...