日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于正則表達(dá)式(regex)的插圖指南

m3Fp_almosthuma ? 來(lái)源:機(jī)器之心 ? 2020-01-27 11:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這篇博客是關(guān)于正則表達(dá)式(regex)的插圖指南,旨在為那些從來(lái)沒(méi)有使用過(guò)正則表達(dá)式,想嘗試但又望而生畏的新手提供一個(gè)簡(jiǎn)單介紹。

所以,歡迎使用正則表達(dá)式…

對(duì)于大多數(shù)沒(méi)有接受過(guò)正式 CS 教育的人來(lái)說(shuō),正則表達(dá)式似乎只有最核心的 Unix 程序員才敢碰。

一個(gè)好的正則表達(dá)式看起來(lái)像魔法,但請(qǐng)記?。喝魏巫銐蛳冗M(jìn)的技術(shù)都無(wú)法與魔法區(qū)分開(kāi)來(lái)。

所以,就讓我們揭開(kāi)正則表達(dá)式的神秘面紗!

如果你理解正則表達(dá)式,它會(huì)突然變成一個(gè)超快速和強(qiáng)大的工具……但你首先需要理解它,老實(shí)說(shuō),我覺(jué)得新手可能會(huì)對(duì)它望而生畏!

讓我們從基礎(chǔ)開(kāi)始。正則表達(dá)式(regex)是什么?它們的用途是什么?

Regex 新手上路

本質(zhì)上來(lái)看,正則表達(dá)式是定義一種搜索模式的字符序列。

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

考慮以下一個(gè) cat.txt 文件:

catcat2dog

如果我們使用正則表達(dá)式 cat 來(lái)搜索匹配項(xiàng),我們會(huì)找到以下匹配項(xiàng):

catcat2

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

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

需要反復(fù)強(qiáng)調(diào)的一個(gè)重要問(wèn)題是:正則表達(dá)式適用于字符,而不是單詞。隱含串聯(lián)。

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

點(diǎn)和星號(hào)

最基本的字符是單個(gè)字符,如 a、b、c 等?,F(xiàn)在讓我們介紹以下兩種特殊的字符。

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

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

示例分析:The cat ate my homework

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

The cat ate my homework.

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

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

如果找不到匹配項(xiàng),則跳轉(zhuǎn)至該行中的下一個(gè)字符,然后再?gòu)哪J降氖鬃址_(kāi)始。

如果我們找到一個(gè)匹配項(xiàng),則將跳轉(zhuǎn)至模式和該行中的下一個(gè)字符,然后重復(fù)這個(gè)過(guò)程。當(dāng)我們找到整個(gè)模式的匹配時(shí),返回找到匹配項(xiàng)的行。

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

講到這里,我想大家已經(jīng)大致了解了什么是正則表達(dá)式以及它的兩個(gè)特殊字符: .(點(diǎn))和 *(星號(hào))。接下來(lái),我會(huì)為大家介紹更多其他內(nèi)容。

正則表達(dá)式三叉戟

正則表達(dá)式的各個(gè)部分可以由三個(gè)不同的組件組成:

錨點(diǎn)

字符集

修飾符

這三部分構(gòu)成了正則表達(dá)式的三叉戟!

讓我們從三叉戟的第一個(gè)部分開(kāi)始:錨點(diǎn)!

錨點(diǎn)

錨點(diǎn)指定個(gè)各行的模式位置。下面是兩個(gè)最重要的錨點(diǎn):

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

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

注意,在以上兩種情況下,錨點(diǎn)必須分別位于模式的開(kāi)頭和結(jié)尾。^1 匹配行首的 1,但 1^匹配后跟^的 1。類似地,1$匹配以 1 結(jié)尾的行,但$1 匹配一個(gè)該行任意位置后跟 1 的美元符號(hào)。

字符集

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

其他一些重要的字符集:

[0-9] 匹配 0…9 中的任何一個(gè)數(shù)字

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

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

我們還可以對(duì)多個(gè)字符集進(jìn)行組合:

[A-ZA-Z0-9] 匹配任何大小寫字母和單個(gè)數(shù)字。

修飾符

此部分內(nèi)容沒(méi)有深入展開(kāi),以前面遇到的一個(gè)修飾符 *(星號(hào))為例。修飾符改變它前面字符的含義。還有很多其他的修飾符,但以* 為例進(jìn)行討論是一個(gè)很好的開(kāi)始。

如下所示:讓我們快速將文本轉(zhuǎn)儲(chǔ)到文件中。

$ 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

這是現(xiàn)在文件中的內(nèi)容。

$ 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

尋找任何以數(shù)字^[0-9] 開(kāi)始的任意行。

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

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

總結(jié)

回顧一下這篇博客的內(nèi)容:

正則表達(dá)式的基本功能;

正則表達(dá)式的三個(gè)主要組件:錨點(diǎn)、字符集和修飾符。

.(點(diǎn))、*(星號(hào))、^(插入符)和$(美元符號(hào))。

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

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

如果能夠克服技術(shù)上的困難,則最終可以掌握這種相對(duì)簡(jiǎn)單但功能卻很強(qiáng)大的正則表達(dá)式工具,從而為任何數(shù)據(jù)科學(xué)家?guī)?lái)寶貴的價(jià)值。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 字符
    +關(guān)注

    關(guān)注

    0

    文章

    237

    瀏覽量

    26285
  • 正則表達(dá)式
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    3878

原文標(biāo)題:新手上路:圖文解讀助你理解和使用正則表達(dá)式

文章出處:【微信號(hào):almosthuman2014,微信公眾號(hào):機(jī)器之心】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    條件的執(zhí)行語(yǔ)句

    條件執(zhí)行語(yǔ)句大多在if語(yǔ)句中使用,也在使用關(guān)系運(yùn)算符(<,==,>等) 或者布爾值表達(dá)式(,!等)計(jì)算復(fù)雜表達(dá)式時(shí)使用。對(duì)于包含函數(shù)調(diào) 用的代碼片段,由于函數(shù)返回值會(huì)被
    發(fā)表于 12-12 08:25

    布爾表達(dá)式及范圍檢查

    一個(gè)常用的布爾表達(dá)式是用于判斷變量是否位于某個(gè)范圍內(nèi), 例如,檢查一個(gè)圖形坐標(biāo)是否位于一個(gè)窗口內(nèi): bool PointInRectangelArea (Point p, Rectangle
    發(fā)表于 12-12 07:08

    布爾表達(dá)式和零值比較處理

    處理器的標(biāo)志位在比較指令操作后被設(shè)置。標(biāo)志位同樣可以被諸如MOV、ADD、AND、MUL等 基本算術(shù)和裸機(jī)指令改寫。如果數(shù)據(jù)指令設(shè)置了標(biāo)志位,N和Z標(biāo)志位也將與結(jié)果與0比較一樣 進(jìn)行設(shè)置。N標(biāo)志表示結(jié)果是否是負(fù)值,Z標(biāo)志表示結(jié)果是否是0。 C語(yǔ)言中,處理器中的N和Z標(biāo)志位與下面的指令聯(lián)系在一起:有符號(hào)關(guān)系運(yùn) 算x<0,x>=0,x==0,x!=0;無(wú)符號(hào)關(guān)系運(yùn)算x==0,x!=0(或者x>0)。 C代碼中每次關(guān)系運(yùn)算符的調(diào)用,編譯器都會(huì)發(fā)出一個(gè)比較指令。 如果操作符是上面提到的,編譯器便會(huì)優(yōu)化掉比較指令。例如: int aFunction(int x, int y) { if (x + y < 0) return 1; else return 0; } 盡可能的使用上面的判斷方式,這可以在關(guān)鍵循環(huán)中減少比較指令的調(diào)用, 進(jìn)而減少代碼體積并提高代碼性能。C語(yǔ)言沒(méi)有借位和溢出位的概念,因此, 如果不借助匯編,不可能直接使用借位標(biāo)志C和溢出位標(biāo)志V。但編譯器支 持借位(無(wú)符號(hào)溢出),例如: int sum(int x, int y) { int res; res = x + y; if ((unsigned) res < (unsigned) x) // carry set?// res++; return res; }
    發(fā)表于 12-12 06:16

    C語(yǔ)言的分支結(jié)構(gòu)介紹

    1.簡(jiǎn)單if語(yǔ)句 C語(yǔ)言中的分支結(jié)構(gòu)語(yǔ)句中的if條件語(yǔ)句。 簡(jiǎn)單if語(yǔ)句的基本結(jié)構(gòu)如下: 代碼語(yǔ)言:javascript if(表達(dá)式) { 執(zhí)行代碼塊; } 其語(yǔ)義是:如果表達(dá)式的值為真,則執(zhí)行其后的語(yǔ)句,否則不執(zhí)行該語(yǔ)句。 注意:if()后面沒(méi)有分號(hào),直
    發(fā)表于 11-25 07:48

    C語(yǔ)言強(qiáng)制類型轉(zhuǎn)換

    強(qiáng)制類型轉(zhuǎn)換是通過(guò)定義類型轉(zhuǎn)換運(yùn)算來(lái)實(shí)現(xiàn)的。其一般形式為: (數(shù)據(jù)類型) (表達(dá)式) 其作用是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說(shuō)明符所表示的類型 在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問(wèn)題: 數(shù)據(jù)類型
    發(fā)表于 11-24 06:32

    第4章 C語(yǔ)言基礎(chǔ)以及流水燈的實(shí)現(xiàn)(4.5 4.6)

    (表達(dá)式) ? ? ? ?{ ? ? ? ? ? ?循環(huán)體語(yǔ)句; ? ? ? ?} 在C語(yǔ)言里,通?!?b class='flag-5'>表達(dá)式”符合條件叫做真,不符合條件,叫做假。比如前邊i while(表達(dá)式)這個(gè)括號(hào)里的
    的頭像 發(fā)表于 11-06 11:21 ?537次閱讀

    inline ASM(內(nèi)聯(lián)匯編)的細(xì)節(jié)分享

    內(nèi)聯(lián)匯編,否則,仍然是帶有C++表達(dá)式的內(nèi)聯(lián)江編,此時(shí)\"instructionlist\"中的寄存器的寫法需要遵守相關(guān)的規(guī)定: 寄存器前必須使用兩個(gè)百分號(hào)(%%),而不是像
    發(fā)表于 10-31 09:11

    I1電流計(jì)算對(duì)不對(duì)?怎么推導(dǎo)不出來(lái)I1的表達(dá)式是圖中那樣

    I1電流計(jì)算對(duì)不對(duì)?怎么推導(dǎo)不出來(lái)I1的表達(dá)式是圖中那樣
    發(fā)表于 09-28 18:01

    labview如何使用VISA串口資源查找的正則表達(dá)式提取串口的資源名稱?

    如圖,如何利用VISA資源查找的正則表達(dá)式從很多串口當(dāng)中提取想要的目標(biāo)串口(Quectel USB AT Port這個(gè)串口)?
    發(fā)表于 07-07 17:20

    基礎(chǔ)篇3:掌握Python中的條件語(yǔ)句與循環(huán)

    不同的條件執(zhí)行不同的代碼塊。Python中的條件語(yǔ)句主要使用if、elif(else if的縮寫)和else關(guān)鍵字。 if語(yǔ)句 最簡(jiǎn)單的條件語(yǔ)句是if語(yǔ)句,它的工作方式如下: 復(fù)制代碼 if 條件表達(dá)式
    發(fā)表于 07-03 16:13

    Cubeide1.18.1在線調(diào)試改變\"現(xiàn)場(chǎng)表達(dá)式\"中的值提示找不到地址,為什么?

    Cubeide1.18.1在線調(diào)試時(shí),在\"現(xiàn)場(chǎng)表達(dá)式\"中添加全局變量,然后改變其數(shù)值,Console窗口提示: Failed to read all registers
    發(fā)表于 06-12 06:50

    《ESP32S3 Arduino開(kāi)發(fā)指南》第三章 C/C++語(yǔ)言基礎(chǔ)

    基礎(chǔ),由于篇幅有限,在此僅對(duì)C/C++語(yǔ)言基礎(chǔ)進(jìn)行簡(jiǎn)單介紹。本章將分為如下9個(gè)小節(jié):3.1 數(shù)據(jù)類型3.2 運(yùn)算符3.3 表達(dá)式3.4 數(shù)組3.5 字符串3.6 注釋3.7 順序結(jié)構(gòu)3.8 選擇結(jié)構(gòu)
    發(fā)表于 06-10 09:20

    Cubeide1.18.1在線調(diào)試改變\"現(xiàn)場(chǎng)表達(dá)式\"中的值提示找不到地址是怎么回事?

    Cubeide1.18.1在線調(diào)試時(shí),在\"現(xiàn)場(chǎng)表達(dá)式\"中添加全局變量,然后改變其數(shù)值,Console窗口提示: Failed to read all registers
    發(fā)表于 06-10 08:26

    干貨分享 | 零基礎(chǔ)上手!TSMaster圖形信號(hào)表達(dá)式實(shí)操指南

    TSMaster軟件支持在圖形里面的信號(hào)表達(dá)式功能,主要用于多信號(hào)表達(dá)式運(yùn)算和顯示的場(chǎng)景。本文將以A2L中的標(biāo)定變量為例,介紹如何使用圖形中的信號(hào)表達(dá)式功能進(jìn)行多信號(hào)的后處理運(yùn)算和顯示。本文關(guān)鍵詞
    的頭像 發(fā)表于 06-06 20:03 ?1035次閱讀
    干貨分享 | 零基礎(chǔ)上手!TSMaster圖形信號(hào)<b class='flag-5'>表達(dá)式</b>實(shí)操<b class='flag-5'>指南</b>

    Cubeide1.18.1在線調(diào)試改變\"現(xiàn)場(chǎng)表達(dá)式\"中的值提示找不到地址,怎么解決?

    Cubeide1.18.1在線調(diào)試時(shí),在\"現(xiàn)場(chǎng)表達(dá)式\"中添加全局變量,然后改變其數(shù)值,Console窗口提示: Failed to read all registers
    發(fā)表于 06-06 08:27
    旬邑县| 新闻| 北海市| 壶关县| 神农架林区| 陇西县| 嘉义市| 台安县| 宜章县| 仁怀市| 五华县| 封丘县| 鄂尔多斯市| 柘荣县| 班玛县| 曲沃县| 长春市| 天全县| 额尔古纳市| 南召县| 阿坝县| 九龙县| 双牌县| 曲松县| 海丰县| 盐边县| 台中市| 贵阳市| 曲水县| 临桂县| 和林格尔县| 城固县| 浮梁县| 孝义市| 德州市| 宁都县| 宁波市| 宜阳县| 剑河县| 景德镇市| 盐亭县|