最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Perl語(yǔ)言正則表達(dá)式使用案列一

2022-07-09 17:46 作者:笨笨熊愛吃肉  | 我要投稿

最近一段時(shí)間沒有進(jìn)行公眾號(hào)文章更新,到不是因?yàn)闆]有新的內(nèi)容可以寫,其實(shí)做了一些注釋的分析,因?yàn)楸蛔⑨屲浖ASA給搞的有點(diǎn)焦慮,著實(shí)耽誤了我一些時(shí)間,為了趕點(diǎn)進(jìn)度,也懶得再去分享公眾號(hào)文章。PASA在安裝時(shí)太不友好,剛開始使用起來(lái)上手也不是很順利,下周找個(gè)時(shí)間分享一下PASA的安裝使用過(guò)程。今天在使用Augustus接著PASA的一個(gè)結(jié)果文件往下分析時(shí),使用到了正則,雖然略懂一些Perl,但這幾年太少親自寫腳本了,一下子看時(shí)沒能理解了是怎樣匹配處理想要的字符串并重新輸出的,有必要再去仔細(xì)查查強(qiáng)大的正則功能了。


定義:正則表達(dá)式是一種字符串模式,可用來(lái)和字符串進(jìn)行匹配。匹配可能成功,也可能失敗。許多UNIX命令,包括grep, sed, awk, ed, vi, emacs都有正則表達(dá)式的功能。

有這么一個(gè)格式的文件,

圖片

通過(guò)perl命令行:

cat train.err | perl -pe 's/.*in sequence (\S+): .*/$1/' >badgenes.lst

提取其中的一列信息,得到badgenes.list文件:

圖片

今天主要對(duì)正則中不同類型組合進(jìn)行學(xué)習(xí)。

下面對(duì)s/.*in sequence (\S+): .*/$1/ 進(jìn)行解析:


替換:s///這種形式表明正則表達(dá)式將被文本替換


‘.’:換行符以外的任意字符;

重復(fù)符號(hào):multiplier,如星號(hào)(*)表示出現(xiàn)零次以上;加號(hào)(+)則表示出現(xiàn)一次以上;問(wèn)號(hào)(?)則表示出現(xiàn)零次或一次;

.*?代表一個(gè)通配符,它意味著“匹配任意字符(換行符除外)零次或多次”,也就是說(shuō)in sequence 前的任何字符匹配;


\S?匹配非空格字符(字符組合[/t/n]), \S+ 匹配非空格字符一次以上;


反向引用(),假定想保存一些匹配供后用,那么為達(dá)到該目的,Perl有一個(gè)運(yùn)算符(圓括號(hào)()),該運(yùn)算符可用于包圍讀者希望匹配的一系列給定的字符。

如果用圓括號(hào)括住一組字符,那么就可以在正則表達(dá)式結(jié)束之前使用反向引用。如果想在s”?”?“的第二部分(帶下劃線)中使用反向引用,那么要使用語(yǔ)法$1,$2等。如果想在m”?“或者s”?”?“的第一部分(帶下劃線)使用反向引用,那么使用語(yǔ)法/1/2等。

例子:

$string?=?‘?far?out’;

$string?=~?s?“(far)(out)”?$2?$1″;?#?This?makes?string?‘?out?far’.

在該例中將單詞far out轉(zhuǎn)換為out far。


總結(jié)一下這個(gè)正則的含義:.*匹配in sequence前內(nèi)容 + 匹配 in sequence + \S+匹配非空格字符一次以上也就是gi|687_106-210內(nèi)容并用反向引號(hào)()進(jìn)行保存 +? :.*匹配:及其后面的所有字符,$1進(jìn)行替換并輸出到新文件中。


補(bǔ)充學(xué)習(xí):

單正則使用:

單字符類型:?jiǎn)巫址愋褪亲畛R姾妥畛S玫念愋?。如a。單字符類型”.”能跟除換行符號(hào)(\n)的任何字符匹配。如

/a./

會(huì)和任何長(zhǎng)度為二,且開頭是a的字符串匹配,除了”a\n”外。

字符類:(character class),寫法是左右兩個(gè)中括號(hào)([]),內(nèi)放字符。即字符串對(duì)應(yīng)此類型的地方,若出現(xiàn)唯一一個(gè)符合括號(hào)中列出的字符,就算符合。

/[abcde]/

?/[aeiouAEIOU]/

若在中括號(hào)中放[或者],則需要在前面加反斜杠。如果想表示一段范圍,則可以用破折號(hào)(dash-)連接。想表示破折號(hào),則前面也必須加反斜杠。

[0123456789]

[0-9]

[0-9\-]

[a-zA-Z]

也可以用“反例”表示字符類別,只要在原來(lái)的寫法前加上“^”即可。此種類型的意思是任何不在此類別內(nèi)的單一字符才算上匹配。

[^0-9]

[^aeiouAEIOU]

預(yù)定義的字符類別

圖片

下面是這些配符以及它們代表的含義和它們對(duì)應(yīng)的字符組合:

.\d —?匹配數(shù)字(字符組合[0-9])。

.\D —?匹配非數(shù)(字符組合[^0-9])。

.\w —?匹配單詞字符(字符組合[a-zA-Z0-9_])(這里下劃線算作一個(gè)單詞字符)。

.\W —?匹配非單詞字符(字符組合[^a-zA-Z0-9_])。

.\s —?匹配空格字符(字符組合[/t/n])(制表符、換行符、空格)。

.\S —?匹配非空格字符(字符組合[/t/n])。

.-?匹配任意字符(在某些情況下)換行符除外(字符組合[^/n])、當(dāng)輸入m”(.*)”S時(shí)匹配任意字符。

.$-?盡管它實(shí)際上并不是一個(gè)通配符(它不匹配任何具體字符).但它是廣泛使用的特殊字符;如果將其放在正則表達(dá)式的尾部則它匹配“行尾”。零寬度斷言。

.^-?盡管實(shí)際上不是一個(gè)通配符,但如果它位于正則表達(dá)式的開頭則它是匹配“行首”的特殊字符。

./b,/B-?與$和^相同;不匹配字符,但匹配單詞邊界(/b)或匹配無(wú)單周邊(/B)。



參考:

http://www.blogjava.net/ruoyoux/articles/253084.html

https://javaforall.cn/138204.html

本文使用 文章同步助手 同步

Perl語(yǔ)言正則表達(dá)式使用案列一的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
缙云县| 重庆市| 图木舒克市| 洛浦县| 昌黎县| 松溪县| 刚察县| 鄂尔多斯市| 德州市| 宁晋县| 莒南县| 拉萨市| 皮山县| 宁夏| 广平县| 崇仁县| 荣成市| 永和县| 新河县| 深水埗区| 镇沅| 南岸区| 张家港市| 泗洪县| 永泰县| 成都市| 息烽县| 新巴尔虎右旗| 黑水县| 汉源县| 大邑县| 平顶山市| 江津市| 建湖县| 乐亭县| 庆阳市| 玛沁县| 长子县| 纳雍县| 徐州市| 柳江县|