regexprep正則表達式

matlab提供的正則表達式函數(shù)有三個:

regexp——用于對字符串進行查找阅爽,大小寫敏感;
regexpi——用于對字符串進行查找,大小寫不敏感钥飞;
regexprep——用于對字符串進行查找并替換。

第一部分——單個字符的匹配

1 句點符號 '.' ——匹配任意一個(只有一個)字符(包括空格)衫嵌。
例如:t.n读宙,它匹配tan、 ten楔绞、tin和ton结闸,還匹配t#n唇兑、tpn甚至t n,還有其他許多無意義的組合桦锄。

Matlab例子程序:

clear;clc
str='ten,&8yn2tin6ui>&ton, t n,-356tpn,$$$$t#n,4@).,t@nT&nY';
pat='t.n';
[o11,o22,o33]=regexpi(str,pat,'start','end','match');
% 輸出起始位置o11和子串o33(具體找出來的匹配字符的cell array)

2 方括號符號 '[oum]' ——匹配方括號中的任意一個
例如:pat = 't[aeio]n'; 只匹配tan,Ten,tin和toN等扎附。

3 方括號中的連接符 '[c1-c2]' ——匹配從字符c1開始到字符c2結(jié)束的字母序列

4 \n 等 ——特殊字符
下面是一些匹配單個字符的轉(zhuǎn)義字符正則表達式及所匹配的值。
\xN或\x{N} 匹配八進制數(shù)值為N的字符
\oN或\o{N} 匹配十六進制數(shù)值為N的字符
\a Alarm(beep)
\b Backspace
\t 水平Tab
\n New line
\v 垂直Tab
\f 換頁符
\r 回車符
\e Escape
\c 某些在正則表達式中有語法功能或特殊意義的字符c察纯,要用\c來匹配帕棉,而不能直接用c匹配,如.用正則表達式.匹配,而\用正則表達式\匹配

5 \w,\s和\d——類表達式
和上面的\n等表中的轉(zhuǎn)義字符有所不同饼记,\w,\s,\d等匹配的不是某個特定的字符香伴,而是某一類字符。具體說明如下:
\w匹配任意的單個文字字符具则,相當于[a-zA-Z0-9_];
\s匹配任意的單個空白字符即纲,相當于[\t\f\n\r];
\d匹配任意單個數(shù)字博肋,相當于[0-9]低斋;
\S匹配除空白符以外的任意單個字符,相當于[^ \t\f\n\r]——方括號中的^表示取反匪凡;
\W匹配任意單個字符膊畴,相當于[^a-zA-Z0-9_];
\D匹配除數(shù)字字符外的任意單個字符病游,相當于[^0-9]唇跨。

第二部分串的匹配

1.多次匹配{nstart,nend}
比如,我們要匹配'ppp',那么就可以用正則表達式'ppp'衬衬,還可以記為'p{3}'买猖。
正則表達式中的'{}'用來表示匹配前面的表達式的出現(xiàn)次數(shù)。就是說滋尉,'p{2,3}'玉控,匹配'pp'和'ppp'。例如:

expr? 與expr匹配的元素出現(xiàn)0或1次狮惜,相當于{0,1}
expr* 與expr匹配的元素出現(xiàn)0次或更多高诺,相當于{0,}
expr+ 與expr匹配的元素出現(xiàn)1次或更多,相當于{1,}
expr{n} 與expr匹配的元素出現(xiàn)n次碾篡,相當于{n,n}
expr{n,} 與expr匹配的元素至少出現(xiàn)n次
expr{n,m} 與expr匹配的元素出現(xiàn)n次但不多于m次

(1)假設(shè)匹配號碼格式999-99-9999:[0-9]{3}-[0-9]{2}-[0-9]{4}
(2)若連字符號可以出現(xiàn)也可以不出現(xiàn):[0-9]{3}-?[0-9]{2}-?[0-9]{4}
(3)使用expr*時懒叛,matlab將盡可能的匹配最長的字符子串。
(4)如果我們希望匹配盡可能短的字符子串時耽梅,可以在上面我們使用的字符串后使用'?',也就是expr*?,如:

>> str='<tr valign=top><td><a name="19184"></a>xyz';
regexp(str, '<.*?>', 'match')
ans =
'<tr valign=top>' '<td>' '<a name="19184">' '</a>'
regexp(str, '<.*>', 'match')
ans =
'<tr valign=top><td><a name="19184"></a>'

(5)expr*+
先執(zhí)行expr*,"游標"(如果有的話)就指到了與expr*匹配的字符子串的最末端,然后從那里開始再檢查下一個字符與后面的表達式是否匹配胖烛,如果匹配就繼續(xù)向前(如果一直成功則返回最長的字符串)眼姐,如果不匹配則直接返回空诅迷。

2.邏輯運算符

'exp|exp2':或
(expr) 將expr標記為一組、匹配expr众旗,并將匹配的字符子串標記起來以供后面使用罢杉。
(?:expr) 說明expr為一組,相當于數(shù)學(xué)表達式中的()

lstr='A body or collection of such stories';
regexp(lstr, '(?:[^aeiou][aeiou]){2,}', 'match');
ans =
'tori'
% [^aeiou]表示除aeiou以外的字符贡歧,即輔音字符(其實空格等也會被算入)
% [aeiou]表示元音字符
% (?:)輔音字符+元音字符形成一個音節(jié)
% (?:){2}兩個音節(jié)

上面的表達式中{2,}對[^aeiou][aeiou]起作用滩租,如果去掉分組,則只對[aeiou]起作用利朵,如下所示:

regexp(lstr,'[^aeiou][aeiou]{2,}','match')
ans =
'tio' 'rie'

(?>expr) expr中的每個元素是一個分組
(?#expr) expr放在(?#和)之間是就是注釋律想。

^expr 匹配expr,并且出現(xiàn)在原字符串最前端的子串
expr$ 匹配expr绍弟,并且出現(xiàn)在原字符串最末端的子串
<expr 匹配expr技即,并且出現(xiàn)在一個單詞最前端的子串
expr> 匹配expr,并且出現(xiàn)在一個單詞最末端的子串
<expr> 更嚴格的單詞匹配樟遣,如:以s開頭而叼,并且以h結(jié)尾的單詞

lstr='A body or collection of such stories';
regexp(lstr, 's\w*h', 'match')
ans =
'such'

  1. 左顧右盼——利用上下文匹配
    這個也比較容易理解。就是利用上下文的匹配來找到我們要找的內(nèi)容豹悬。
    expr1(?=expr2) 找到匹配expr1的子串,如果其后的字符串也匹配expr2
    如葵陵,下面的例子查找所有在','之前的單詞。

pstr = ['While I nodded, nearly napping, ' …
'suddenly there came a tapping,'];
regexpi(pstr, '\w*(?=,)', 'match')
ans =
'nodded' 'napping' 'tapping'

expr1(?!expr2) 找到匹配expr1的子串如果其后的字符串不匹配expr2
下面的例子匹配所有不在','之前的單詞

regexpi(pstr, '\w*+(?!,)', 'match') % 這里面的+很重要
ans =
Columns 1 through 6
'While' 'I' 'nearly' 'suddenly' 'there' 'came'
Column 7
'a'

(?<=expr1)expr2 找到匹配expr2的子串,如果其前面的字符串也匹配expr1
下面的例子查找所有在','之后的單詞瞻佛,注意:','之后可能有空格脱篙,所以是【,\s*】,而不是僅僅【,】

regexpi(pstr,'(?<=,\s*)\w*','match')
ans =
'nearly' 'suddenly'

(?<!expr1)expr2 找到匹配expr2的子串,如果其后的字符串不匹配expr1
下面的例子查找所有不在','之后的單詞涤久,

regexpi(pstr,'(?<!,\s*)\w*','match')
ans =
Columns 1 through 6
'While' 'I' 'nodded' 'early' 'napping' 'uddenly'
Columns 7 through 10
'there' 'came' 'a' 'tapping'

轉(zhuǎn)載自:http://blog.163.com/zzz216@yeah/blog/static/1625546842014120962775/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涡尘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子响迂,更是在濱河造成了極大的恐慌考抄,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔗彤,死亡現(xiàn)場離奇詭異川梅,居然都是意外死亡,警方通過查閱死者的電腦和手機然遏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門贫途,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人待侵,你說我怎么就攤上這事丢早。” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵怨酝,是天一觀的道長傀缩。 經(jīng)常有香客問我,道長农猬,這世上最難降的妖魔是什么赡艰? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮斤葱,結(jié)果婚禮上慷垮,老公的妹妹穿的比我還像新娘。我一直安慰自己揍堕,他們只是感情好料身,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鹤啡,像睡著了一般惯驼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上递瑰,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天祟牲,我揣著相機與錄音,去河邊找鬼抖部。 笑死说贝,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的慎颗。 我是一名探鬼主播乡恕,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼俯萎!你這毒婦竟也來了傲宜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤夫啊,失蹤者是張志新(化名)和其女友劉穎函卒,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撇眯,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡报嵌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了熊榛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锚国。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玄坦,靈堂內(nèi)的尸體忽然破棺而出血筑,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布豺总,位于F島的核電站梆砸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏园欣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一休蟹、第九天 我趴在偏房一處隱蔽的房頂上張望沸枯。 院中可真熱鬧,春花似錦赂弓、人聲如沸绑榴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翔怎。三九已至,卻和暖如春杨耙,著一層夾襖步出監(jiān)牢的瞬間赤套,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工珊膜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留容握,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓车柠,卻偏偏與公主長得像剔氏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子竹祷,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • iOS中使用正則表達式就不得不提NSRegularExpression谈跛,所以我們需要先搞清楚什么是NSRegula...
    sunmumu1222閱讀 2,348評論 0 4
  • 正則表達式到底是什么東西?字符是計算機軟件處理文字時最基本的單位塑陵,可能是字母感憾,數(shù)字,標點符號猿妈,空格吹菱,換行符,漢字等...
    獅子挽歌閱讀 2,150評論 0 9
  • 初衷:看了很多視頻彭则、文章鳍刷,最后卻通通忘記了,別人的知識依舊是別人的俯抖,自己卻什么都沒獲得输瓜。此系列文章旨在加深自己的印...
    DCbryant閱讀 4,016評論 0 20
  • 20170531 這幾天重新拾起了爬蟲,算起來有將近5個月不碰python爬蟲了。 對照著網(wǎng)上的程序和自己以前寫的...
    八神蒼月閱讀 14,172評論 3 44
  • 你要走嗎 離開或者消失 我該如何與你告別呢 是說一句再見 還是不談言語 你說目送就好 我便目送你輕挪著步子 隱沒在人海
    我很懶WHL閱讀 147評論 0 10