第10章 使用stringr處理字符串P2

第10章 使用stringr處理字符串

要到正則表達(dá)式了啸澡!緊不緊張拜效!刺不刺激 :)

使用正則表達(dá)式進(jìn)行模式匹配

準(zhǔn)備工作

library(tidverse)
library(stringr)

主要是通過兩個函數(shù)str_view()和str_view_all() 首先用help函數(shù)自學(xué)一下原朝!

x <- c("apple","banana","pear")

思考一下,我想要提取其中的apple字符可以用幾種方式?最簡單的就是x[[1]]
但是這里有一個bug,就是我們已經(jīng)知道了apple字符所在的向量中的位置
如果我們不知道呢袍嬉?

str_view(x,"apple")
str_detect(x, "apple")
[1]  TRUE FALSE FALSE
str_locate(x, "apple")
     start end
[1,]     1   5
[2,]    NA  NA
[3,]    NA  NA
identical

str_view函數(shù)內(nèi)部是一個if循環(huán)加上identical函數(shù)、str_detect函數(shù)灶平,str_locate函數(shù)阎姥、str_sub函數(shù)、paste0函數(shù)鸭丛。這些基本就構(gòu)成了要學(xué)習(xí)的內(nèi)容眉抬。當(dāng)然關(guān)于paste0函數(shù)的問題答案有,自己去看看嘍瞒爬。

function (string, pattern, match = NA) 
{
    if (identical(match, TRUE)) {
        string <- string[str_detect(string, pattern)] #提取了match=TRUE的內(nèi)容
    }
    else if (identical(match, FALSE)) {
        string <- string[!str_detect(string, pattern)] #提取了match=FALSE的內(nèi)容
    }
    loc <- str_locate(string, pattern) #查看匹配字符的位置
    has_match <- !is.na(loc[, "start"])# 提取loc中start位置弓柱,并且再次提取不是na的值
    str_sub(string[has_match], loc[has_match, , drop = FALSE]) <- paste0("<span class='match'>", 
        str_sub(string[has_match], loc[has_match, , drop = FALSE]), 
        "</span>")
    str_view_widget(string)
}
<bytecode: 0x0000000008ec0e90>
<environment: namespace:stringr>

這里書上先介紹了為什么“”或者’‘在里面不能算是一個字符型的向量,也介紹了如果想表示應(yīng)該如何進(jìn)行表達(dá)侧但。其實這里面的轉(zhuǎn)義運用的就是后邊要介紹的正則表達(dá)式矢空。所以讀到這里很懵b的狀態(tài)也沒關(guān)系。

基礎(chǔ)匹配

上面說用到了str_view()函數(shù)來匹配x中apple字符禀横。如果我想要匹配所有an的單詞屁药?應(yīng)該怎么辦?書上寫的很明白了燕侠,結(jié)合上面的應(yīng)該能看懂者祖。
后邊又使用了正則表達(dá)式中的.來代表任意字符。
其實我感覺绢彤,這書為什么不把正則表達(dá)式放在前面講七问。。茫舶。

. 可以匹配任何單個的字符字母數(shù)字甚至.字符本身。同一個正則表達(dá)式允許使用多個.字符。但不能匹配換行
\ 轉(zhuǎn)義字符讥耗,如果要匹配就要寫成“\(\)”
| 表示可選項有勾,即|前后的表達(dá)式任選一個
^ 取非匹配
$ 放在句尾,表示一行字符串的結(jié)束
() 提取匹配的字符串古程,(\s*)表示連續(xù)空格的字符串
[] 選擇方括號中的任意一個(如[0-2]和[012]完全等價蔼卡,[Rr]負(fù)責(zé)匹配字母R和r)
{} 前面的字符或表達(dá)式的重復(fù)次數(shù)。如{5,12}表示重復(fù)的次數(shù)不能小于5挣磨,不能多于12雇逞,否則都不匹配
*(星號) 匹配零個或任意多個字符或字符集合,也可以沒有匹配
+(加號) 匹配一個或多個字符茁裙,至少匹配一次
? 匹配零個或一個字符

關(guān)于元字符的概念和意義我就不在這里說了塘砸,我也說不明白啊晤锥!但是記住如果你想表達(dá)上述正則表達(dá)式的字符需要用轉(zhuǎn)義符號/來表示掉蔬,用writeLines()函數(shù)可以看見表達(dá)的意思。
書上舉了非常極端的////的例子矾瘾,讀到這的時候樂懵b了....
這兩個博客講的都很不錯女轿,我的表格也是來自于這個博客。

https://www.cnblogs.com/wheng/p/6262737.html
https://www.cnblogs.com/nkwy2012/p/8601562.html

錨點霜威、字符類和字符選項谈喳、重復(fù)

錨點主要是告訴正則表達(dá)式你匹配的字符的位置,你是想匹配開頭^還是結(jié)尾$出現(xiàn)a的字母案昶谩!這里出現(xiàn)了一個/b來表示邊界的問題赏僧。
字符型和字符選項主要是告訴正則表達(dá)式匹配的字符是什么類型的大猛,是數(shù)字型啊淀零?還是空白字符巴旒ā?還是巴拉巴拉驾中?
這里有一個需要特殊記憶[^abc]代表匹配除了abc以外的任意字符唉堪。
重復(fù)就是告訴這個匹配的a是重復(fù)幾次啊肩民?有沒有重復(fù)次數(shù)斑胙恰?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末持痰,一起剝皮案震驚了整個濱河市灶搜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖割卖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件前酿,死亡現(xiàn)場離奇詭異,居然都是意外死亡鹏溯,警方通過查閱死者的電腦和手機(jī)罢维,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丙挽,“玉大人肺孵,你說我怎么就攤上這事∪∈裕” “怎么了悬槽?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瞬浓。 經(jīng)常有香客問我初婆,道長,這世上最難降的妖魔是什么猿棉? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任磅叛,我火速辦了婚禮,結(jié)果婚禮上萨赁,老公的妹妹穿的比我還像新娘弊琴。我一直安慰自己,他們只是感情好杖爽,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布敲董。 她就那樣靜靜地躺著,像睡著了一般慰安。 火紅的嫁衣襯著肌膚如雪腋寨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天化焕,我揣著相機(jī)與錄音萄窜,去河邊找鬼。 笑死撒桨,一個胖子當(dāng)著我的面吹牛查刻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凤类,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼穗泵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了踱蠢?” 一聲冷哼從身側(cè)響起火欧,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤棋电,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后苇侵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赶盔,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年榆浓,在試婚紗的時候發(fā)現(xiàn)自己被綠了于未。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡陡鹃,死狀恐怖烘浦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情萍鲸,我是刑警寧澤闷叉,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站脊阴,受9級特大地震影響握侧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嘿期,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一品擎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧备徐,春花似錦萄传、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蹭睡,卻和暖如春答朋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棠笑。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留禽绪,地道東北人蓖救。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像印屁,于是被迫代替她去往敵國和親循捺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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

  • 以前
    在下星軌閱讀 182評論 0 0
  • 下雪了念赶,但是卻沒有人陪著一起看雪,曾經(jīng)你的身影已漸漸模糊恰力,我用力回憶叉谜,卻終究還是想不起來。時間讓這些記憶在腦海里的...
    夜曉瑯閱讀 263評論 0 0
  • 何謂誠實踩萎?即誠實守信停局。誠實,即忠誠老實香府,就是忠于事物的本來面貌董栽,不隱瞞自己的真實思想,不掩飾自己的真實感情企孩,不說謊...
    Sunny仔仔閱讀 1,100評論 1 4