91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

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

正則表達式實用指南

Q4MP_gh_c472c21 ? 來源:嵌入式軟件實戰(zhàn)派 ? 作者:實戰(zhàn)派小師弟 ? 2020-11-16 15:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

正則表達式(Regular Expression,或者Regex),能干嘛?聽說很強悍,很多人用來查找字符串,或者替換某些字符串。

實際上,正則表達式有四個功能:

匹配,即查找,例如,從雜亂的一堆文本里面,找到你想要的

替換,按某種規(guī)則替換內(nèi)容

分割,將文本內(nèi)容按某種規(guī)則分割開來

檢驗,檢驗?zāi)澄谋臼欠穹弦?guī)則

如果沒玩過正則表達式,也看不出這四個功能到底能干嘛。

我剛學(xué)那陣,覺得這東西,玩點小兒科的東西還行,能干大事?

后來,越用越多,發(fā)現(xiàn)這貨在你遇到困境的時候可以力挽千鈞。

話說回來,這個東西能裝逼嗎?

1. 你女朋友喊你查她的號碼

你女朋友(假如你有)有一天跟你撒嬌,她給你一個txt文檔,里面存著一個她的號碼,讓你把她的號碼找出來。此時,你不記得她的完整號碼了,如果找不出來,晚上就得跪CPU了。剎那間,你想到了,她的號碼有這樣的數(shù)字……771……55(親親你……嗯嗯)。于是你,快速用Notepad++打開含有一堆亂七八糟電話號碼的文本。查找輸入:1d+771d+55,然后回車,Bingo!不信,你試試:

15672846712 13892738409 021-82937465 13263748592 18028374732 010-27384762 13877190955 022-2873625 1324353738 1621723839 38293923 48234934 3123372390 1367282902 1356282920 ......

好吧,故事是虛構(gòu)的,也別幻想你女朋友真的讓你查號碼了。

簡單解釋一下,這里面的d就是表示digital的意思即0-9都可以用d來描述,而d+就表示有多個數(shù)字。這個是正則表達式中非常簡單的應(yīng)用了。

2. 查找文件中某字符串內(nèi)容

模糊搜索到底怎么搞的,你有想過么?要不先來玩下這個,好像有種“萬軍之中取人頭顱如探囊取物”感覺。

例如,你要查找AUTOSAR代碼中Os Timer相關(guān)的某些函數(shù),這些函數(shù)有些特征,帶有Os_和Pit的字符,那么你可以用linux上的grep命令或者用vscode的正則表達式功能Os_w+Pitw+來查找。

上面這個w就是匹配word的意思。其實,原理跟上一個例子類似,原理很簡單。

實際上,“匹配或者查找”是正則表達式最基本的功能了。

3. 爬取和解析一些不可描述的內(nèi)容

正則表達式還能不能干點刺激的事情呢?

我有個朋友(別問我朋友是誰,有沒有他的聯(lián)系方式……)。他為了下載某些小視頻,硬生生地學(xué)會了爬蟲,然后,下載了一堆封面圖片和一些不可描述的文字描述,還有BT種子,我問他有多少,他說1TB的硬盤快滿了……

我問他是怎么做到的,他說他用了BeautifulSoup庫來爬的,傻瓜式的,很簡單,大有要傳授我這些秘技的樣子。他還按番號做了分類,每一類番號,還生成一個markdown文本,其中用的最多的就是Regex,例如某類番號可以用ABC-d+篩選出來。

搞完后,他“握草”了好幾次,驚嘆這個小小的島國,怎么可以拍這么多這些不可描述的小視頻,而且還……(此處省略255個字)

我很好奇,這個爬蟲這么好玩?我專門研究了下這個爬蟲神器BeautifulSoup,其中很多方法是支持正則表達式的,如re.compile('[a-z]+-[0-9]+',re.I).findall(str_temp)。用起來簡直是如虎添翼……

玩歸玩,正則表達式在我眼里應(yīng)該多干些正經(jīng)事的。

4. 批量格式化處理

我有一堆16進制數(shù),我想用到C代碼里面,例如將下面的內(nèi)容加上0x和逗號,怎么搞?

01234567 89ABCDEF 1011121314151617 18191A1B1C1D1E1F 2021222324252627 28292A2B2C2D2E2F

作為一個很懶的程序員,我肯定不會一個個添加的。試試這個:

查找目標(biāo):(w+)[s! ]

替換為:0x1,

(w+)就是那一個個十六進制數(shù),這個括號的作用,就先記錄一下,把它放一個分組里面,等下還要用。

[s! ]又是啥玩意?中括號的意思,就是匹配中括號里面任意一個內(nèi)容,s就是空字符,包括空格、換行符、TAB等。 就是換行啦,而! 呢,非換行咯。整個意思就是,匹配任意不包含換行符的空字符。

下面,這個0x1,中的1就是上面查到的分組的內(nèi)容。

5. 將數(shù)據(jù)格式化后復(fù)制到Excel

上面的例子有點啰嗦了,看個簡單的,有以下數(shù)據(jù),想將其中的0x和逗號去掉,并復(fù)制到Excel中。

0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40,

實際需要分兩步:

想將其中的0x和逗號去掉;

復(fù)制到Excel中(需要將多余的空格換成Tab字符,才能將多個數(shù)值分別填到不同單元格中)。

按照上面的例子,需要:

查找目標(biāo):0x(w+),s+

替換為:1

自己領(lǐng)悟一下,哈哈!雕蟲小技,還有沒有別的?

6. 代碼生成與格式化

現(xiàn)有播放器很多個命令,我想將其生成對應(yīng)的函數(shù),怎么辦?

命令:

play pause stop prev next fastforward fastrewind ……

函數(shù):

BOOL player_play_cmd_func(void* p) { } BOOL player_pause_cmd_func(void* p) { } ……

一個個手動敲進去?我這么懶,才不呢。

試試這個:

查找目標(biāo):^(w+)$

替換為:BOOL player_1_cmd_func(void* p) { }

好像都很簡單啊,有沒難一點的啊!

7. 刪除不含某些信息的的內(nèi)容

匹配查找包含某些信息的內(nèi)容倒是容易,怎么匹配不包含的內(nèi)容啊?

例如,我想刪掉不是.mid后綴的內(nèi)容,怎么搞?

2009/06/11 05:22 24,253 flourish.mid 2009/06/11 05:24 118,060 ir_begin.wav 2009/06/11 05:24 126,252 ir_end.wav 2009/06/11 05:24 178,732 ir_inter.wav 2009/06/11 05:22 228,396 notify.wav 2009/06/11 05:22 40,075 onestop.mid 2009/06/11 05:22 111,788 recycle.wav 2009/06/11 05:22 88,236 ringout.wav 2009/06/11 05:22 22,097 town.mid

試試這個:

查找目標(biāo):^((?!(2009.*.mid$)).)*$

替換為:

看不懂?好好研究下!哈哈哈……

7. 搭上腳本語言的快車

Python、Ruby、Perl、JavaScript上用正則表達式,簡直會爽到飛起來……前提你要學(xué)會正則表達式各種語法。

這個就不裝逼了,以后慢慢玩。

責(zé)任編輯:lq

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

    關(guān)注

    68

    文章

    11080

    瀏覽量

    217146
  • C代碼
    +關(guān)注

    關(guān)注

    1

    文章

    90

    瀏覽量

    14788

原文標(biāo)題:正則表達式裝逼(實用)指南

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

    干貨分享 | 零基礎(chǔ)上手!TSMaster圖形信號表達式實操指南

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

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

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

    Linux中文本處理命令的用法

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

    Linux grep命令詳解

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

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

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

    詳解nginx中的正則表達式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    在一些傳統(tǒng)編程語言中,一個表達式由一個或多個操作數(shù)(operand)通過零個或多個操作符(operator)組合而成,表達式總是隱含著一個計算過程,因此每個表達式都會有一個計算結(jié)果,對于只有操作數(shù)而
    發(fā)表于 08-08 10:27
    主站蜘蛛池模板: q2002韩国理论 | 么公的好大好硬好深好爽在线视频 | a毛片基地免费全部香蕉 | 美女国产一区 | 国产人成精品免费视频 | 欧美video free xxxxx| 精品国产午夜久久久久九九 | 6080午夜 | 天天夜天天干 | 男人天堂网2021 | 国产精品一区二区三区四区 | 五月天婷婷电影 | 深点再深一点好爽好多水 | 中文字幕一区二区在线观看 | 大尺度在线| 国产午夜小视频 | 天天操天天擦 | 午夜视频免费国产在线 | 91po狼人社在线观看 | 午夜在线一区 | 99成人国产精品视频 | 亚a在线| 久久999 | 久久黄色视屏 | 亚洲欧美视频在线观看 | 国产免费黄视频 | 亚洲美国avcom | 日本久久久久久久 | 202z国产高清日本在线播放 | 亚洲一级色片 | 欧美黑人粗硬大在线看 | 国产在线观看午夜不卡 | 午夜网站免费 | 成年女人免费看一级人体片 | 国产美女精品久久久久久久免费 | 亚洲视频福利 | 成人久久久 | 阿v视频在线观看免费播放 爱爱视频天天干 | 大量国产后进翘臀视频 | 成 人 色综合| 性黄视频|