中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
R語言stringr包的使用-2

昨天劍哥說要不要寫一下關(guān)于正則表達(dá)式的內(nèi)容,今天看書就正好看到這一章。R for data science總體上感覺講解的還不是特別詳細(xì),我總體按照書來寫,有想要深入學(xué)習(xí)的同學(xué),可以去google搜索,非常多好的內(nèi)容。

同樣,先先加載包:

library(tidyverse)library(stringr)

1基礎(chǔ)匹配

我們先來看一個(gè)例子。用stringr包中的str_view函數(shù)來看一下匹配的含義。

x <- c('apple', 'banana', 'pear')str_view(string = x, pattern = 'an')

可以看到該函數(shù)將字符串中含有an的對(duì)象banana找出來了。這可以算作是精確匹配,那么如果我們想要匹配的是符合一定規(guī)律的怎么辦呢?比如想要匹配中間為字母a,前后為任意字符皆可。這就用到正則表達(dá)式了,維基百科定義如下:

正則表達(dá)式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),又稱正規(guī)表示、正規(guī)表示法、正規(guī)表達(dá)式、規(guī)則表達(dá)式、常規(guī)表示法,是計(jì)算機(jī)科學(xué)的一個(gè)概念。正則表達(dá)式使用單個(gè)字符串來描述、匹配一系列匹配某個(gè)句法規(guī)則的字符串。在很多文本編輯器里,正則表達(dá)式通常被用來檢索、替換那些匹配某個(gè)模式的文本。
wikipedia

比如剛才的例子,就可以這么寫:

x <- c('apple', 'banana', 'pear')str_view(string = x, pattern = '.a.')

其中的“.”,就代表著任意字符,注意任意,也就是不管是字母,數(shù)字,符號(hào),空格等等,都是可以的。但是問題來了,如果我們需要的是精確匹配“.”本身呢,這時(shí)候需要使用反斜杠 “\”對(duì)其進(jìn)行轉(zhuǎn)義,這時(shí)候正字表達(dá)式就不會(huì)將其視作廣義的代表,而是該字符本身了。但是因?yàn)閈本身在正則表達(dá)式中也有其特殊含義,因此他也需要一個(gè)反斜杠對(duì)其進(jìn)行轉(zhuǎn)義,也就是說,如果我們想匹配.,我們需要這么寫,\\.,也就是兩個(gè)反斜杠。我們舉個(gè)例子:

x <- c('abc', 'a.c', 'bef')str_view(string = x, pattern = 'a\\.c')

可以看到這樣就可以把點(diǎn)本身精確匹配到了。

那么如果想要匹配```本身呢?需要4個(gè)反斜杠。。。因?yàn)槭紫确葱备艹霈F(xiàn)在字符串中就需要對(duì)其進(jìn)行轉(zhuǎn)義,也就是說表示為一個(gè)反斜杠就需要2個(gè),所以,最后就出現(xiàn)了四個(gè)反斜杠。另外,最近在看python,python中有原生字符串的概念,所以對(duì)于出現(xiàn)反斜杠的字符串,可以直接使用r,就不怕漏掉反斜杠了。

x <- 'a\\b'writeLines(x)#> a\bstr_view(string = x, pattern = '\\\\')

那么如果要匹配''\,該怎么寫呢?例子如下:

aa''\

2固定位置進(jìn)行匹配

比如你想匹配開頭或者結(jié)尾為固定內(nèi)容的對(duì)象,在正則表達(dá)式中,也有固定符號(hào)進(jìn)行表示。

^表示開頭。

$表示結(jié)尾。

匹配以字母a開頭的對(duì)象:

x <- c('apple', 'banana', 'pear')str_view(string = x, pattern = '^a')

匹配以字母a結(jié)尾的對(duì)象:

x <- c('apple', 'banana', 'pear')str_view(string = x, pattern = 'a$')

注意兩個(gè)符合的位置。

如果想要精確匹配某個(gè)字符,這兩個(gè)特殊夫就非常有用了:

x <- c('apple pie', 'apple', 'apple cake')str_view(string = x, pattern = 'apple')str_view(string = x, pattern = '^apple$')

如果想要精確匹配對(duì)象$^$,那么該怎么寫呢?

$^$

apple

$^$a

string包中有一個(gè)單詞庫,我們可以用它來聯(lián)系一下,比如,匹配該單詞庫中所有以x開頭的單詞:

x <- stringr::wordsstr_view(string = x, pattern = '^x', match = TRUE)

匹配所有以y結(jié)尾的單詞:

x <- stringr::wordsstr_view(string = x, pattern = 'y$', match = TRUE)

匹配所有長度為3的對(duì)象,注意不可以使用str_length函數(shù)

x <- stringr::wordsstr_view(string = x, pattern = '^...$', match = TRUE)

匹配所有長度為7及以上的對(duì)象,注意同樣不可以使用str_length函數(shù)

特殊字符

從上面可以看出來,其實(shí)正則表達(dá)式就是特殊字符的組合,用來表示符合規(guī)定的對(duì)象,因此特殊字符就尤為重要,我們下面來看看都有哪些特殊字符。

\d:表示任意數(shù)字,d就是digit的意思。

\s:表示任意空白,比如空格,tab等。

[abc]:中括號(hào)將里面包含的內(nèi)容,表示任意一個(gè)即可,比如[abc]代表的就是a,b或者c。

[^abc]:這表示的是除了a,b和c之外的任意字符。

同樣的,記住,只要反斜杠出現(xiàn),就要同時(shí)出現(xiàn)兩個(gè)。

寫到這里,電腦沒電了,又忘了帶帶能源,那就正好明天一起,把特殊字符寫完。

公眾號(hào)排版很不好看,大家如果使用電腦,可以點(diǎn)擊原文,使用R notebook來寫的。

按照英語字母順序,但是不同地方可能不一樣,比如下面的例子:

x <- c('apple', 'eggplant', 'banana')
str_sort(x, locale = 'en')  # English

## [1] 'apple'    'banana'   'eggplant'

str_sort(x, locale = 'haw') # Hawaiian

## [1] 'apple'    'eggplant' 'banana'

感覺這個(gè)功能不會(huì)太常用。了解一下就好了。

----------------------------------------------------------------------

------------------------------------------------------------------------

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
《R數(shù)據(jù)科學(xué)》第10章-用stringr處理字符串
R語言字符串處理值stringr
《數(shù)據(jù)科學(xué)中的R語言》之字符串處理入門---比較全面
R for Data Science(九)
[轉(zhuǎn)載]R語言字符串處理總結(jié)
stringr-----str_replace_na
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服