日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正则表达式入门之字符匹配

發(fā)布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则表达式入门之字符匹配 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

正則表達式入門-字符匹配

在前段時間進行文本挖掘練習的時候,不會使用正則表達式,深感不宜。所以這里,我想趕緊學(xué)習一下正則表達式。

注:本文是對《正則表達式必知必會》的復(fù)習。

1.正則表達式簡介

正則表達式是一些用來匹配和處理文本的字符串,正則表達式語言用來構(gòu)造正則表達式(最終構(gòu)造出的字符串就成為正則表達式).

正則表達式語言并不是一種完備的程序設(shè)計語言,它甚至算不上是一種能夠直接安裝并運行的程序。

更準確地說,正則表達式語言是內(nèi)置于其他語言或軟件里的迷你語言。

2.匹配單個字符

2.1匹配純文本

1

#文本 Hello, my name is Goat. #正則表達式 Goat

#結(jié)果

Hello, my name is Goat.

Goat本身是純文本,所以看起來不像是正則表達式,但它確實是。?

正則表達式可以包含純文本,甚至可以只包含純文本。


2.2匹配任意字符

在正則表達式中,特殊字符(或字符集合)用來給出要搜索的東西。字符.(英文句號)可以匹配任何一個單個的字符。

1

#文本 sales1.csv orders3.csv sales2.csv sales.csv apac1.csv na1.csv na2.csv sa1.csv #正則表達式 sales.

#結(jié)果

sales1.csv

orders3.csv

sales2.csv

sales.csv

apac1.csv

na1.csv

na2.csv

sa1.csv

正則表達式sales.把字符串sales和另一個字符構(gòu)成的文件名查找出來。8個文件里有3個與這個模式相匹配。

.字符可以匹配任何單個的字符、字母、數(shù)字、甚至是.字符本身。

在同一個正則表達式中,可以出現(xiàn)多個.字符,他們既可以連續(xù)出現(xiàn),也可以間隔出現(xiàn)在模式的不同位置。

2

#文本 sales1.csv orders3.csv sales2.csv sales.csv apac1.csv na1.csv na2.csv sa1.csv #正則表達式 .a..

#結(jié)果

sales1.csv

orders3.csv

sales2.csv

sales.csv

apac1.csv

na1.csv

na2.csv

sa1.csv

我們想要把以na或sa開頭的文件找出來。正則表達式.a..將na1.csv、na2.csv、sa1.csv找出來,但他還找出了4個我們并不需要的匹配結(jié)果。

?

2.3匹配特殊字符

.字符在正則表達式中有特殊含義,如果我們需要一個.字符,而不是它在正則表達式中的特殊含義,

我們就需要在.前面加上\(反斜杠)字符,對他進行轉(zhuǎn)義。\是一個元字符(表示這個字符有特殊含義,而不是字符本身含義).

1

#文本 sales1.csv orders3.csv sales2.csv sales.csv apac1.csv na1.csv na2.csv sa1.csv #正則表達式 .a.\.csv

#結(jié)果

sales1.csv

orders3.csv

sales2.csv

sales.csv

apac1.csv

na1.csv

na2.csv

sa1.csv

可以看到,我們正確匹配了,我們想要的字符串。

在正則表達式中,\字符永遠出現(xiàn)在一個有著特殊含義的字符序列開頭,這個序列可以由一個或者多個字符構(gòu)成。

如果需要搜索\本身,就必須對\進行轉(zhuǎn)義,相應(yīng)的轉(zhuǎn)義序列是兩個連續(xù)的反斜杠字符\\。

3.匹配一組字符

3.1匹配多個字符中的一個

與匹配任意單個字符的.字符不同,字符集合能匹配特定的字符和字符區(qū)間。

1(相比于上例減少了sales2.csv,增加了ca1.csv)

#文本 sales1.csv orders3.csv sales.csv apac1.csv na1.csv na2.csv sa1.csv ca1.csv #正則表達式 [ns]a.\.csv

#結(jié)果

sales1.csv

orders3.csv

sales.csv

apac1.csv

na1.csv

na2.csv

sa1.csv

ca1.csv

這里正則表達式以[ns]開頭,表示這個集合將匹配字符n或s(但不匹配字符c或其他字符)。

在使用[和]定義的字符集合里,這兩個元字符之間所有字符都是該集合的組成部分,

字符集合的匹配結(jié)果是能夠與該集合里任意一個成員匹配的文本。

字符集合在不需要區(qū)分大小寫的搜索操作里比較常見。

3.2利用字符集合區(qū)間

1(相比于上例增加了sam.csv)

#文本 sales1.csv orders3.csv sales.csv apac1.csv na1.csv na2.csv sa1.csv ca1.csv sam.csv #正則表達式 [ns]a[0-9]\.csv

#結(jié)果

sales1.csv

orders3.csv

sales.csv

apac1.csv

na1.csv

na2.csv

sa1.csv

ca1.csv

sam.csv

為了避免匹配到sam.csv我們在正則表達式中,將.字符替換成[0-9],表示匹配0到9之間的任意一個數(shù)字。

在這里正則表達式提供了一個特殊的元字符,字符區(qū)間可以用-(連字符)來定義。

-(連字符)作為元字符,只能在[和]之間,在字符集合以外的地方,-只是一個普通的字符,只能和-本身匹配,因此在正則表達式中-不需要轉(zhuǎn)義。

要避免讓這個區(qū)間的尾字符小于首字符(例如[3-1]),這種區(qū)間沒有意義。

字符區(qū)間并不僅限于數(shù)字,以下都是合法字符區(qū)間:

A-Z

匹配A到Z所有大寫字母

a-z

匹配a到z所有小寫字母

A-F

匹配A到F所有大寫字母

A-z

匹配ASCII字符A到ASCII字符z的所有字母


3.3取非匹配

1

#文本 sales1.csv orders3.csv sales.csv apac1.csv na1.csv na2.csv sa1.csv ca1.csv sam.csv #正則表達式 [ns]a[^0-9]\.csv

#結(jié)果

sales1.csv

orders3.csv

sales.csv

apac1.csv

na1.csv

na2.csv

sa1.csv

ca1.csv

sam.csv

這個例子中[0-9]變成了[^0-9],表示匹配的是任何不是數(shù)字的字符。元字符^來表示對一個字符集合進行取非匹配。

^的效果將作用于給定字符集合里的所有字符或字符區(qū)間,而不僅限于緊跟在^字符后的那一個字符或字符區(qū)間。






總結(jié)

以上是生活随笔為你收集整理的正则表达式入门之字符匹配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。