1樓:匿名使用者
點代表的是任意字元。
* 代表的是取 0 至 無限長度
問號代表的是非貪婪模式。
三個連結在一起是取儘量少的任意字元,一般不會這麼單獨寫。
他大多用在:.*?a
就是取前面任意長度的字元,到底一個 a 出現,匹配如下q@wer_qwerqweraljlkjlkjlkj,
得到:q@wer_qwerqwera 這部分,如果匹配不到後面的 a 字元,則匹配為空。
正規表示式,又稱規則表示式,是電腦科學的一個概念,這個概念最初是由unix中的工具軟體普及開的。正則表通常被用來檢索、替換那些符合某個模式(規則)的文字。正則引擎主要分為dfa、nfa兩大類。
許多程式設計語言都支援利用正規表示式進行字串操作。例如,在perl中就內建了一個功能強大的正規表示式引擎。
正規表示式的「鼻祖」或許可一直追溯到科學家對人類神經系統工作原理的早期研究。通常縮寫成「regex」,單數有regexp、regex,複數有regexps、regexes、regexen。
2樓:p為夢停留
正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個「規則字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。
它是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個「規則字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。正規表示式是一種文字模式,模式描述在搜尋文字時要匹配的一個或多個字串。
3樓:阿炎的情感小屋
正規表示式,又稱規則表示式。是電腦科學的一個概念。
正規表示式通常被用來檢索、替換那些符合某個模式(規則)的文字。許多程式設計語言都支援利用正規表示式進行字串操作。例如,在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","#");//表示將連續出現三個或三個以上的數字替換成「#」。
4樓:樂觀小山
正規表示式,又稱規則表示式。(英語: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$"。
5樓:迷人的小
正規表示式(regular expression)描述了一種字串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。
正規表示式是一種可以用於模式匹配和替換的規範,一個正規表示式就是由普通的字元(例如字元a到z)以及特殊字元(元字元)組成的文字模式,它用以描述在查詢文字主體時待匹配的一個或多個字串。
正規表示式作為一個模板,將某個字元模式與所搜尋的字串進行匹配。每一門計算機程式語言,都支援正規表示式。正規表示式能夠進行資料隱藏,資料採集,資料過濾和資料驗證。
6樓:匿名使用者
簡單的說就是,用一小段簡單的各種字元的組合,即叫做 正規表示式,去實現複雜的:
字串匹配,查詢你到你所需要的內容,以便後期提取出來你所要的內容。
這個聽起來很簡單,但是很多現實的應用中,所要處理的字串有千千萬萬種,各種複雜的字元,而且每個人的需求有無窮盡種,需要提取出的內容也是無窮多。而如果手動處理,寫普通的if else語句去一點點判斷字串是否相等,則是無法實現的。
而用正則,就可以實現如此多的,繁雜的,極度複雜的,各種需求。
更多的內容,可以看看我所總結的:
正規表示式學習心得
再舉幾個實際的例子:
notepad++正規表示式替換舉例1:一次性替換多個檔案的字尾
notepad++正規表示式替換舉例2:一次性替換多個路徑
notepad++正規表示式替換舉例3:一次性替換多個listitem為sect4
notepad++正規表示式替換舉例4:給每一行都新增addicon的字首
notepad++正規表示式替換舉例5:給book的標題和地址新增html**
7樓:匿名使用者
你前面的感嘆號是不是之前有個問號?
(?!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'。
8樓:匿名使用者
如果原來沒有使用過正規表示式,那麼可能對這個術語和概念會不太熟悉。不過,它們並不是您想象的那麼新奇。
請回想一下在硬碟上是如何查詢檔案的。您肯定會使用 ? 和 * 字元來幫助查詢您正尋找的檔案。?
字元匹配檔名中的單個字元,而 * 則匹配一個或多個字元。一個如 'data?.dat' 的模式可以找到下述檔案:
data1.dat
data2.dat
datax.dat
datan.dat
如果使用 * 字元代替 ? 字元,則將擴大找到的檔案數量。'data*.dat' 可以匹配下述所有檔名:
data.dat
data1.dat
data2.dat
data12.dat
datax.dat
dataxyz.dat
儘管這種搜尋檔案的方法肯定很有用,但也十分有限。? 和 * 萬用字元的有限能力可以使你對正規表示式能做什麼有一個概念,不過正規表示式的功能更強大,也更靈活。
正規表示式中的 .*? 或 .*+ 是什麼意思? 20
9樓:四舍**入
一、*表示匹配前面的字元
0個或多個
二、+表示前面的字元1個或多個
三、?表示放在其他字元後面表示前面的字元可以有,也可以沒有,或者放在*、+後面表示匹配儘可能少的字元
例如:字串fooooo,正則fo*和fo+會匹配整個字串,fo+? 匹配fo,
fo*? 匹配f
四、*+沒有這樣的用法,除非是匹配星號本身,即: \*+ 表示一個或多個星號
10樓:完旋真向
*?是惰性匹配,就是匹配儘可能少的次數。
.*?的意思是匹配任意字元,儘可能少的次數。
比如:abaaaaabb
用a.*b去匹配,會匹配到abaaaaabb全部,應為正則預設貪婪匹配,找到第一個b之後,發現後面還有b,會一直匹配下去。
所以可以使用貪婪匹配,a.*?b
這樣的話,
只會匹配儘可能少的次數
就會匹配到
ab還有問題hi我。
11樓:徐_赫
後邊多一個?表示懶惰模式。
必須跟在*或者+後邊用
如:如果用正則匹配src中內容非懶惰模式匹配src=".*"
匹配結果是
意思是從="往後匹配,直到最後一個"匹配結束懶惰模式正則:
src=".*?"
結果:src="test.jpg"
因為匹配到第一個"就結束了一次匹配。不會繼續向後匹配。因為他懶惰嘛。
.表示除\n之外的任意字元
*表示匹配0-無窮
+表示匹配1-無窮
求正規表示式分割aa ee得到,求正規表示式 分割 aa bb cc dd ee 得到 aa , bb , cc , dd , ee
str.match w g str.match w u4e00 u9fa5 g 支援中文 aa bb 標準的表示 包含aa,且包含bb 的模式,對aa和bb的出現順序無要求,但這是偵測,不能 獲,要想捕獲內容,就需要把邊界定義清楚。在你沒有說清楚的時候,暫以 包含aa和bb的一行文字 為捕獲內容來理...
關於正規表示式問號的幾種匹配,正規表示式匹配問號 不是問號的用法
pattern 匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行儲存供以後使用。這在使用 或 字元 來組合一個模式的各個部分是很有用。例如,industr y ies 就是一個比 industry industries 更簡略的表示式。pattern 負向預查,在任何不匹配...
正規表示式特殊符號 冒號,如何使用正規表示式提取冒號後面的內容
與其輸bai入之後再判斷,不如du限制輸入,當前前zhi提是這dao些特殊符號是無內效的 如果你需 容要這些特殊符號只是想暫時去除,應該是用for來一個一個找,效率高點,而不是if txt.indexof 0 txt.indexof 0 寫一大串的條件 你直接定義一個chararray,加入 之類的...