在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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 ? 來源:機(jī)器之心 ? 2020-01-27 11:02 ? 次閱讀

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

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

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

一個(gè)好的正則表達(dá)式看起來像魔法,但請(qǐng)記住:任何足夠先進(jìn)的技術(shù)都無法與魔法區(qū)分開來。

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

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

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

Regex 新手上路

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

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

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

catcat2dog

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

catcat2

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

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

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

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

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

最基本的字符是單個(gè)字符,如 a、b、c 等。現(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è)匹配項(xiàng),則將跳轉(zhuǎn)至模式和該行中的下一個(gè)字符,然后重復(fù)這個(gè)過程。當(dāng)我們找到整個(gè)模式的匹配時(shí),返回找到匹配項(xiàng)的行。

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

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

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

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

錨點(diǎn)

字符集

修飾符

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

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

錨點(diǎn)

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

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

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

注意,在以上兩種情況下,錨點(diǎn)必須分別位于模式的開頭和結(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)容沒有深入展開,以前面遇到的一個(gè)修飾符 *(星號(hào))為例。修飾符改變它前面字符的含義。還有很多其他的修飾符,但以* 為例進(jìn)行討論是一個(gè)很好的開始。

如下所示:讓我們快速將文本轉(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] 開始的任意行。

$ 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] 和它們的組合。

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

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

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

    關(guān)注

    0

    文章

    234

    瀏覽量

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

    關(guān)注

    0

    文章

    28

    瀏覽量

    3634

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    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ā)表于 04-27 06:18

    Linux中文本處理命令的用法

    Linux 三劍客是(grep,sed,awk)三者的簡(jiǎn)稱,熟練使用這三個(gè)工具可以提升運(yùn)維效率。Linux 三劍客以正則表達(dá)式作為基礎(chǔ),而在Linux系統(tǒng)中,支持兩種正則表達(dá)式,分別為“標(biāo)準(zhǔn)正則表達(dá)式”和“擴(kuò)展
    的頭像 發(fā)表于 04-15 10:22 ?171次閱讀
    Linux中文本處理命令的用法

    Linux grep命令詳解

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

    表達(dá)式畫Coms電路,最近二周有比賽第一次接觸Cmos,主要用與或非門電路畫

    用與或非門電路繪畫,通過表達(dá)式,來繪畫cmos門電路
    發(fā)表于 12-04 16:02

    詳解nginx中的正則表達(dá)式

    前言,我這里驗(yàn)證的nginx-v1.23.2單機(jī)環(huán)境下的nginx中的正則表達(dá)式、location路徑匹配規(guī)則和優(yōu)先級(jí)。
    的頭像 發(fā)表于 12-03 09:59 ?667次閱讀
    詳解nginx中的<b class='flag-5'>正則表達(dá)式</b>

    Verilog表達(dá)式的位寬確定規(guī)則

    很多時(shí)候,Verilog中表達(dá)式的位寬都是被隱式確定的,即使你自己設(shè)計(jì)了位寬,它也是根據(jù)規(guī)則先確定位寬后,再擴(kuò)展到你的設(shè)計(jì)位寬,這常常會(huì)導(dǎo)致結(jié)果產(chǎn)生意想不到的錯(cuò)誤。
    的頭像 發(fā)表于 10-22 15:41 ?1210次閱讀
    Verilog<b class='flag-5'>表達(dá)式</b>的位寬確定規(guī)則

    通過工業(yè)智能網(wǎng)關(guān)實(shí)現(xiàn)中間變量表達(dá)式的快速配置

    ,出現(xiàn)告警可能是多個(gè)變量達(dá)到條件而觸發(fā)的,就需要對(duì)中間變量進(jìn)行配置。 對(duì)此,物通博聯(lián)提供基于工業(yè)智能網(wǎng)關(guān)實(shí)現(xiàn)中間變量表達(dá)式的快速配置操作。用戶可以根據(jù)生產(chǎn)現(xiàn)場(chǎng)的應(yīng)用需求,靈活配置中間變量表達(dá)式,實(shí)現(xiàn)多參數(shù)、多條件
    的頭像 發(fā)表于 10-08 17:10 ?518次閱讀
    通過工業(yè)智能網(wǎng)關(guān)實(shí)現(xiàn)中間變量<b class='flag-5'>表達(dá)式</b>的快速配置

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

    前言,我這里驗(yàn)證的nginx-v1.23.2單機(jī)環(huán)境下的nginx中的正則表達(dá)式、location路徑匹配規(guī)則和優(yōu)先級(jí)。
    的頭像 發(fā)表于 09-29 16:02 ?1486次閱讀
    nginx中的<b class='flag-5'>正則表達(dá)式</b>和location路徑匹配<b class='flag-5'>指南</b>

    求助,以下恒流源電路Io的計(jì)算表達(dá)式怎么計(jì)算?

    這個(gè)恒流源電路Io的計(jì)算表達(dá)式怎么計(jì)算,求給出詳細(xì)計(jì)算過程
    發(fā)表于 08-22 08:16

    TestStand表達(dá)式中常用的語法規(guī)則和運(yùn)算符使用

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

    Java表達(dá)式引擎選型調(diào)研分析

    1 簡(jiǎn)介 我們項(xiàng)目組主要負(fù)責(zé)面向企業(yè)客戶的業(yè)務(wù)系統(tǒng), 企業(yè)的需求往往是多樣化且復(fù)雜的,對(duì)接不同企業(yè)時(shí)會(huì)有不同的定制化的業(yè)務(wù)模型和流程。 我們?cè)跇I(yè)務(wù)系統(tǒng)中 使用表達(dá)式引擎,集中配置管理業(yè)務(wù)規(guī)則,并實(shí)現(xiàn)
    的頭像 發(fā)表于 08-15 14:25 ?556次閱讀
    Java<b class='flag-5'>表達(dá)式</b>引擎選型調(diào)研分析

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-倉頡基本概念表達(dá)式(二)

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

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-倉頡基本概念表達(dá)式(一)

    在一些傳統(tǒng)編程語言中,一個(gè)表達(dá)式由一個(gè)或多個(gè)操作數(shù)(operand)通過零個(gè)或多個(gè)操作符(operator)組合而成,表達(dá)式總是隱含著一個(gè)計(jì)算過程,因此每個(gè)表達(dá)式都會(huì)有一個(gè)計(jì)算結(jié)果,對(duì)于只有操作數(shù)而
    發(fā)表于 08-08 10:27

    重啟一次VsCode后,ESP_LOGI會(huì)提示錯(cuò)誤“應(yīng)輸入表達(dá)式”的原因?

    我重啟一次vsc后,ESP_LOGI會(huì)提示錯(cuò)誤“應(yīng)輸入表達(dá)式”,不過build的時(shí)候沒有問題。是我C/Cpp配置哪里搞錯(cuò)了嗎?
    發(fā)表于 06-17 08:22

    求助,有關(guān)表達(dá)式選項(xiàng)卡(ADS)的問題求解

    你好。 我看不到表達(dá)式選項(xiàng)卡中的某些變量值。 數(shù)組的大小顯然是 256,但我最多只能看到 100。 請(qǐng)問問題出在哪里? 謝謝。
    發(fā)表于 06-03 06:23
    主站蜘蛛池模板: 欧美一级片网站 | 欧美日本俄罗斯一级毛片 | 轻点太大了好深好爽h文 | 一本大道一卡二卡四卡 | 香淫| 午夜在线视频观看版 | 性做久久久久久网站 | 午夜色大片 | 日本一区二区视频 | 久久国产伦三级理电影 | 日本卡一卡2卡3卡4精品卡无人区 | 亚洲成人99 | 色偷偷免费视频 | 日本大片在线看 | 狠狠狠| 免费啪啪网站 | 国产精品美女自在线观看免费 | videossexotv极度另类高清 | 久久大香线蕉综合爱 | 亚洲h视频 | 日本系列 1页 亚洲系列 | 天天插日日射 | 四虎永久免费地ww4hu57 | 久久天堂网 | 免费的黄色的视频 | 美女国产一区 | 天天曰天天干 | 黄色网址在线免费观看 | 香蕉视频一级 | 2021久久精品99精品久久 | 免费看黄色毛片 | 日本久久综合视频 | 特黄免费 | 日本黄网站高清色大全 | 午夜影院免费观看 | 欧美精品一级 | 国产美女流出白浆在线观看 | 天天干天天看 | 色婷婷亚洲综合五月 | 男人的天堂在线精品视频 | 4338×亚洲全国最大色成网站 |