自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

正則表達(dá)式的選擇符探討

開發(fā) 后端
正則表達(dá)式的選擇符探討主要向你介紹了在正則表達(dá)式是如何實(shí)現(xiàn)選擇匹配的,那么關(guān)于具體的細(xì)節(jié)以及原理本文會向你詳細(xì)介紹。

正則表達(dá)式的選擇符的操作使得我們在使用正則表達(dá)式是更加得心應(yīng)手,那么具體的實(shí)現(xiàn)有什么呢?還有就是正則表達(dá)式選擇符的使用原理是什么呢?讓我們來看看具體的內(nèi)容。

正則表達(dá)式中“|”表示選擇。你可以用選擇符匹配多個可能的正則表達(dá)式中的一個。

如果你想搜索文字“cat”或“dog”,你可以用<<cat|dog>>。如果你想有更多的選擇,你只要擴(kuò)展列表<<cat|dog|mouse|fish>>。

選擇符在正則表達(dá)式中具有***的優(yōu)先級,也就是說,它告訴引擎要么匹配選擇符左邊的所有表達(dá)式,要么匹配右邊的所有表達(dá)式。你也可以用圓括號來限制選擇符的作用范圍。如<<\b(cat|dog)\b>>,這樣告訴正則引擎把(cat|dog)當(dāng)成一個正則表達(dá)式單位來處理。

正則表達(dá)式的選擇符的原理分析:

注意正則引擎的“急于表功”性

正則引擎是急切的,當(dāng)它找到一個有效的匹配時,它會停止搜索。因此在一定條件下,選擇符兩邊的表達(dá)式的順序?qū)Y(jié)果會有影響。假設(shè)你想用正則表達(dá)式搜索一個編程語言的函數(shù)列表:Get,GetValue,Set或SetValue。一個明顯的解決方案是<<Get|GetValue|Set|SetValue>>。讓我們看看當(dāng)搜索SetValue時的結(jié)果。

因?yàn)?lt;<Get>>和<<GetValue>>都失敗了,而<<Set>>匹配成功。因?yàn)檎齽t導(dǎo)向的引擎都是“急切”的,所以它會返回***個成功的匹配,就是“Set”,而不去繼續(xù)搜索是否有其他更好的匹配。

和我們期望的相反,正則表達(dá)式并沒有匹配整個字符串。有幾種可能的解決辦法。一是考慮到正則引擎的“急切”性,改變選項(xiàng)的順序,例如我們使用<<GetValue|Get|SetValue|Set>>,這樣我們就可以優(yōu)先搜索最長的匹配。我們也可以把四個選項(xiàng)結(jié)合起來成兩個選項(xiàng):<<Get(Value)?|Set(Value)?>>。因?yàn)閱柼栔貜?fù)符是貪婪的,所以SetValue總會在Set之前被匹配。

一個更好的方案是使用單詞邊界:<<\b(Get|GetValue|Set|SetValue)\b>>或<<\b(Get(Value)?|Set(Value)?\b>>。更進(jìn)一步,既然所有的選擇都有相同的結(jié)尾,我們可以把正則表達(dá)式優(yōu)化為<<\b(Get|Set)(Value)?\b>>。
 

正則表達(dá)式的選擇符相關(guān)的內(nèi)容就向你介紹到這里,希望對你了解和掌握正則表達(dá)式的選擇符方面的操作有所幫助。

【編輯推薦】

  1. ?*或+正則表達(dá)式使用詳解
  2. 實(shí)現(xiàn)正則表達(dá)式匹配任意字符解析
  3. 淺析正則表達(dá)式實(shí)現(xiàn)字符串的相關(guān)操作
  4. Java正則表達(dá)式實(shí)現(xiàn)條件查詢淺析
  5. 正則表達(dá)式匹配單詞細(xì)節(jié)解析
責(zé)任編輯:仲衡 來源: 百度空間
相關(guān)推薦

2010-01-05 17:46:04

.NET Framew

2018-09-27 15:25:08

正則表達(dá)式前端

2020-09-04 09:16:04

Python正則表達(dá)式虛擬機(jī)

2009-11-30 17:06:35

PHP ereg()函

2009-09-16 12:29:27

PHP正則表達(dá)式正則表達(dá)式修飾符

2009-08-24 16:12:21

正則表達(dá)式操作符

2024-09-14 09:18:14

Python正則表達(dá)式

2010-03-25 18:25:36

Python正則表達(dá)式

2016-11-10 16:21:22

Java 正則表達(dá)式

2022-01-04 11:35:03

Linux Shel正則表達(dá)式Linux

2023-09-13 08:12:45

2009-09-16 17:15:57

正則表達(dá)式引擎

2021-01-27 11:34:19

Python正則表達(dá)式字符串

2009-02-18 09:48:20

正則表達(dá)式Java教程

2009-09-16 18:19:34

正則表達(dá)式組

2011-06-02 12:34:16

正則表達(dá)式

2017-05-12 10:47:45

Linux正則表達(dá)式程序基礎(chǔ)

2019-07-17 15:45:47

正則表達(dá)式字符串前端

2022-03-28 06:19:14

正則表達(dá)式開發(fā)

2009-08-07 14:24:31

.NET正則表達(dá)式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號