色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于正則表達式(regex)的插圖指南

m3Fp_almosthuma ? 來源:機器之心 ? 2020-01-27 11:02 ? 次閱讀

這篇博客是關于正則表達式(regex)的插圖指南,旨在為那些從來沒有使用過正則表達式,想嘗試但又望而生畏的新手提供一個簡單介紹。

所以,歡迎使用正則表達式…

對于大多數沒有接受過正式 CS 教育的人來說,正則表達式似乎只有最核心的 Unix 程序員才敢碰。

一個好的正則表達式看起來像魔法,但請記住:任何足夠先進的技術都無法與魔法區分開來。

所以,就讓我們揭開正則表達式的神秘面紗!

如果你理解正則表達式,它會突然變成一個超快速和強大的工具……但你首先需要理解它,老實說,我覺得新手可能會對它望而生畏!

讓我們從基礎開始。正則表達式(regex)是什么?它們的用途是什么?

Regex 新手上路

本質上來看,正則表達式是定義一種搜索模式的字符序列。

正則表達式通常用于 grep 等工具中,以在較長文本字符串中查找模式。

考慮以下一個 cat.txt 文件:

catcat2dog

如果我們使用正則表達式 cat 來搜索匹配項,我們會找到以下匹配項:

catcat2

高級用戶需要注意的是,本文存在一個技術上的錯誤,即正則表達式和使用正則表達式的工具(如 grep)混為了一談。

正則表達式適用于字符,而不是單詞

需要反復強調的一個重要問題是:正則表達式適用于字符,而不是單詞。隱含串聯。

如果我們使用正則表達式搜索模式 cat,則不會查找單詞「cat」,而會查找字符 c、a 和 t。

點和星號

最基本的字符是單個字符,如 a、b、c 等。現在讓我們介紹以下兩種特殊的字符。

.(點)字符可以匹配*任何單個字符*。例如,如果我們搜索 c.t,則將匹配從 cat 到 c0t 或 cAt 的任何內容,并將匹配任何單個字符 c +任何字符+單個字符 t。

*(星號)字符有點困難。它修改它前面的字符,然后匹配該字符的*零個或多個字符*。的確如此。例如,cat*可以匹配 cat、catt、cattttt 以及 ca。

示例分析:The cat ate my homework

假設我們逐行讀取一個文件,則第一行如下所示:

The cat ate my homework.

讓我們看看如何匹配該行中的模式 cat。

我們首先將該模式的首字符與句子中的首字符匹配。

如果找不到匹配項,則跳轉至該行中的下一個字符,然后再從模式的首字符開始。

如果我們找到一個匹配項,則將跳轉至模式和該行中的下一個字符,然后重復這個過程。當我們找到整個模式的匹配時,返回找到匹配項的行。

這就是正則表達式最基本、最常用的功能,即在較大的字符串中查找較小的搜索模式。

講到這里,我想大家已經大致了解了什么是正則表達式以及它的兩個特殊字符: .(點)和 *(星號)。接下來,我會為大家介紹更多其他內容。

正則表達式三叉戟

正則表達式的各個部分可以由三個不同的組件組成:

錨點

字符集

修飾符

這三部分構成了正則表達式的三叉戟!

讓我們從三叉戟的第一個部分開始:錨點!

錨點

錨點指定個各行的模式位置。下面是兩個最重要的錨點:

^(插入符號)將模式固定到行首。例如,模式^1 匹配以 1 開頭的任意行。

$(美元符)將模式固定到句尾。例如,9$匹配以 9 結尾的任意行。

注意,在以上兩種情況下,錨點必須分別位于模式的開頭和結尾。^1 匹配行首的 1,但 1^匹配后跟^的 1。類似地,1$匹配以 1 結尾的行,但$1 匹配一個該行任意位置后跟 1 的美元符號。

字符集

三叉戟的第二部分:字符集。字符集是正則表達式的基礎。單個字符,比如 a,是最基本的字符集(一組元素)。但是 [0-9] 等正則表達式可以匹配任何一個數字,或者如果你能回想到 *的含義,則可以制作模式 [0-9][0-9](這個模式匹配的內容留給讀者作為練習)。

其他一些重要的字符集:

[0-9] 匹配 0…9 中的任何一個數字

[a-z] 匹配任何小寫字母

[A-Z] 匹配任何大寫字母

我們還可以對多個字符集進行組合:

[A-ZA-Z0-9] 匹配任何大小寫字母和單個數字。

修飾符

此部分內容沒有深入展開,以前面遇到的一個修飾符 *(星號)為例。修飾符改變它前面字符的含義。還有很多其他的修飾符,但以* 為例進行討論是一個很好的開始。

如下所示:讓我們快速將文本轉儲到文件中。

$ echo "The cat jumps long time Then we also have the fact that these are words. 1234 this is a test post please ignore." >> grep.txt

這是現在文件中的內容。

$ cat grep.txtThe cat jumps long timeThen we also have the fact that these are words.1234thisisatestpostpleaseignore.

尋找 cat。

$ grep "cat" grep.txtThe cat jumps long time

尋找任何以數字^[0-9] 開始的任意行。

$ grep "^[0-9]" grep.txt1234 this is a test post please ignore.

就是這樣!你剛剛使用了正則表達式。太棒了。

總結

回顧一下這篇博客的內容:

正則表達式的基本功能;

正則表達式的三個主要組件:錨點、字符集和修飾符。

.(點)、*(星號)、^(插入符)和$(美元符號)。

一些字符集 [0-9]、[a-z]、[A-Z] 和它們的組合。

這篇博客的目的是通過帶插圖的介紹使用戶更輕松地了解正則表達式。

如果能夠克服技術上的困難,則最終可以掌握這種相對簡單但功能卻很強大的正則表達式工具,從而為任何數據科學家帶來寶貴的價值。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 字符
    +關注

    關注

    0

    文章

    233

    瀏覽量

    25222
  • 正則表達式
    +關注

    關注

    0

    文章

    27

    瀏覽量

    3525

原文標題:新手上路:圖文解讀助你理解和使用正則表達式

文章出處:【微信號:almosthuman2014,微信公眾號:機器之心】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux grep命令詳解

    Linux grep命令是一種非常常用的文本搜索工具,它可以在給定的文件中搜索匹配的字符串,并輸出匹配的行。grep是全稱“global search regular expression print”,可以識別正則表達式,并使用正則表達式進行搜索。
    的頭像 發表于 12-25 09:39 ?116次閱讀

    詳解nginx中的正則表達式

    前言,我這里驗證的nginx-v1.23.2單機環境下的nginx中的正則表達式、location路徑匹配規則和優先級。
    的頭像 發表于 12-03 09:59 ?201次閱讀
    詳解nginx中的<b class='flag-5'>正則表達式</b>

    Verilog表達式的位寬確定規則

    很多時候,Verilog中表達式的位寬都是被隱式確定的,即使你自己設計了位寬,它也是根據規則先確定位寬后,再擴展到你的設計位寬,這常常會導致結果產生意想不到的錯誤。
    的頭像 發表于 10-22 15:41 ?520次閱讀
    Verilog<b class='flag-5'>表達式</b>的位寬確定規則

    通過工業智能網關實現中間變量表達式的快速配置

    ,出現告警可能是多個變量達到條件而觸發的,就需要對中間變量進行配置。 對此,物通博聯提供基于工業智能網關實現中間變量表達式的快速配置操作。用戶可以根據生產現場的應用需求,靈活配置中間變量表達式,實現多參數、多條件
    的頭像 發表于 10-08 17:10 ?256次閱讀
    通過工業智能網關實現中間變量<b class='flag-5'>表達式</b>的快速配置

    nginx中的正則表達式和location路徑匹配指南

    前言,我這里驗證的nginx-v1.23.2單機環境下的nginx中的正則表達式、location路徑匹配規則和優先級。
    的頭像 發表于 09-29 16:02 ?823次閱讀
    nginx中的<b class='flag-5'>正則表達式</b>和location路徑匹配<b class='flag-5'>指南</b>

    求助,以下恒流源電路Io的計算表達式怎么計算?

    這個恒流源電路Io的計算表達式怎么計算,求給出詳細計算過程
    發表于 08-22 08:16

    TestStand表達式中常用的語法規則和運算符使用

    TestStand也有自己的語言嘛?在回答這個問題之前大家可以想一下在使用TestStand時有一個和語言密切相關的屬性。沒錯那就是表達式(Expressions),在這篇文章中,小編將以Q&A的方式來帶著大家來理解并熟悉TestStand表達式中較為常用的一些語法規則以
    的頭像 發表于 08-15 18:10 ?1497次閱讀
    TestStand<b class='flag-5'>表達式</b>中常用的語法規則和運算符使用

    鴻蒙原生應用元服務開發-倉頡基本概念表達式(二)

    三、do-while 表達式 do-while 表達式的基本形式為: do { 循環體 } while (條件) 其中“條件”是布爾類型表達式,“循環體”是一個代碼塊。do-while 表達式
    發表于 08-09 14:26

    鴻蒙原生應用元服務開發-倉頡基本概念表達式(一)

    在一些傳統編程語言中,一個表達式由一個或多個操作數(operand)通過零個或多個操作符(operator)組合而成,表達式總是隱含著一個計算過程,因此每個表達式都會有一個計算結果,對于只有操作數而
    發表于 08-08 10:27

    求助,有關表達式選項卡(ADS)的問題求解

    你好。 我看不到表達式選項卡中的某些變量值。 數組的大小顯然是 256,但我最多只能看到 100。 請問問題出在哪里? 謝謝。
    發表于 06-03 06:23

    BGP路由過濾、引入與缺省路由的配置實踐

    第一個用 AS-Path進行路由過濾 利用 AS-Path 進行路由過濾 讓R3只接收來自AS 100的 做正則表達式
    發表于 04-08 10:47 ?1408次閱讀
    BGP路由過濾、引入與缺省路由的配置實踐

    mapgis屬性篩選表達式

    篇文章中,我們將詳細討論MapGIS的屬性篩選表達式,包括語法、操作符和函數等。 屬性篩選表達式是一種在MapGIS中用于指定要素選擇條件的代碼。它由一組操作符、函數和屬性字段組成,用于描述要篩選的要素的特征。在MapGIS中,屬性篩選
    的頭像 發表于 02-25 10:58 ?1662次閱讀

    西門子博途的算術表達式

    算術表達式既可以是一個數字值,也可以是由帶有算術運算符的兩個值或表達式組合而成。 算術運算符可以處理當前 CPU 所支持的各種數據類型。如果在該運算中有 2 個操作數,那么可根據以下條件來確定結果的數據類型。
    的頭像 發表于 01-24 11:36 ?1027次閱讀

    你還不會gvim正則表達式?一文搞懂!

    gvim正則表達式常在命令行模式下使用,一般用于文本文件字符串的替換、刪除等操作。
    的頭像 發表于 01-19 16:47 ?1205次閱讀

    rs觸發器的邏輯表達式

    邏輯表達式是描述邏輯關系的符號表示,可以用于定義和描述各種電路和邏輯操作。在邏輯電路中,RS觸發器是一種基本的存儲器元件,也被稱為鎖存器。 RS觸發器是由兩個與門組成的,其輸出互相連接,形成一個反饋
    的頭像 發表于 01-12 14:09 ?3216次閱讀
    主站蜘蛛池模板: 亚洲精品无码成人AAA片| 少爷不要别揉了高H| 日本一区不卡在线播放视频免费| 午夜伦理yy44008影院| YY600800新视觉理论私人| 秘密教学26我们在做一次吧免费| 亚洲乱亚洲乱妇在线观看| 国产精品免费一区二区区| 色婷婷我要去我去也| 超碰超碰视频在线观看| 强上轮流内射高NP男男| 99热只有精品| 欧美特级特黄a大片免费| 99热精品一区| 欧美成a人片免费看久久| 99精品亚洲| 欧美成人中文字幕在线视频| 97免费视频在线| 男人吃奶摸下挵进去啪啪| 99久久婷婷国产综合精品青草| 美女被触手注入精子强制受孕漫画| 在线国产三级| 美女尿口羞羞视频| 99亚偷拍自图区亚洲| 亲女乱h文小兰第一次| 大学生宿舍飞机china free| 色 花 堂 永久 网站| 国产精品第八页| 亚洲卫视论坛| 麻豆传煤网站网址入口在线下载| 99久久精品免费看国产一区二区三区| 免费高清毛片| 动漫女主被扒开双腿羞辱| 视频一区精品自拍亚洲| 黄梅戏mp3大全| 0855午夜福利伦理电影| 欧美色图天堂网| 国产精品免费一区二区三区四区| 亚洲欧美成人无码久久久| 美女MM131爽爽爽| 国产成人亚洲精品无广告|