1. 程式人生 > >R語言-正則表示式

R語言-正則表示式

在R語言中使用正則表示式替換,可以使用sub()函式,用於全域性替換則用gsub()函式。

1、例子

假設有一個字串向量,需要將多位元組文字過濾出來:

>a<-c("abc\x9422",'女','男','女')

如果直接對其使用大小寫轉換函式toupper(),則會報錯:

> toupper(a)
Error in toupper(a) : 多位元組字串1有錯

如何將該多位元組字元去掉呢?假定它是讀資料檔案引入,沒有意義的。

2、過濾步驟

思路:先將字串向量轉換為字元形式串,然後使用正則表示式替換,因為轉換成字串形式時,只能針對單個向量元素進行,故需要做一個函式,在使用lapply()作用於所有的向量元素。

(1)將字串向量轉換為字串形式

> deparse(a)
[1] "c(\"abc\\x9422\", \"女\", \"男\", \"女\")"

(2)使用正則表示式替換,首先替換掉\"符號,然後再替換掉多位元組字元(模式為:\x\d{2},也就是\x加兩個字元)

sub("\\\"","",deparse(p))

sub("\\\\x\\d{2}",'',sub("\\\"","",deparse(p))

(3)封裝成處理函式

b<-function(p){sub("\\\\x\\d{2}",'',sub("\\\"","",deparse(p))}

(4)將字串處理函式應用到向量

lapply(a,FUN=b)

(5)將結果列表轉換為向量

> unlist(lapply(a,FUN=b))
[1] "abc22" "女"    "男"    "女"

(6)完整的表示式

> b<-function(p){sub("\\\\x\\d{2}",'',sub("\\\"","",deparse(p))}

> a2<-unlist(lapply(a,FUN=b))
> a2

[1] "abc22" "女"    "男"    "女"   

> grep("[a-z]", letters)
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
[25] 25 26
#引數value的使用


> grep("[a-z]", letters,value=TRUE)
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r"
[19] "s" "t" "u" "v" "w" "x" "y" "z"
#將字串的首字母轉換為大寫


> gsub("^(\\w)", "\\U\\1", "a test of capitalizing", perl=TRUE)
[1] "A test of capitalizing"
#將字串中每個單詞的首字母轉換為大寫


> gsub("\\b(\\w)", "\\U\\1", "a test of capitalizing", perl=TRUE)
[1] "A Test Of Capitalizing"


#對電子郵件地址進行匹配為例,用一個正則表示式來匹配電子郵件地址是一項很常見的任務。
>text<-c("[email protected]","[email protected]","[email protected]","[email protected]","[email protected]")
> text
[1] "[email protected]"     "[email protected]"   "[email protected]"
[4] "[email protected]"     "[email protected]"
> grep("(\\w+\\.)*\\[email protected](\\w+\\.)+[a-zA-Z]+",text)
[1] 1 3 5

相關推薦

R語言表示式

R語言正則表示式 本文主要說明R語言的正則表示式,主要是一些簡單的函式和stringr包常用的方法 正則表示式通常被用來檢索、替換那些符合某個模式(規則)的文字。 一些R自帶的正則函式 grep,主要引數為匹配規則,待匹配的字串,返回向量中匹配成功的字串的下標 s<

R語言-表示式

在R語言中使用正則表示式替換,可以使用sub()函式,用於全域性替換則用gsub()函式。 1、例子 假設有一個字串向量,需要將多位元組文字過濾出來: >a<-c("abc\x9422",'女','男','女') 如果直接對其使用大小寫轉換函式toupper()

R語言-表達式1

查找 false substring [1] gre true span 正則表達式 開頭 R語言的正則表達式主要用來處理文本資料,比如進行查找、替換等等。 首先是一些處理文本時會用到的函數: 字符串分割:strsplit() 字符串連接:paste(),paste0()

C語言表示式詳解

標準的C和C++都不支援正則表示式,但有一些函式庫可以輔助C/C++程式設計師完成這一功能,其中最著名的當數Philip Hazel的Perl-Compatible Regular Expression庫,許多Linux發行版本都帶有這個函式庫。   C語言處理正則表示式常用的函

go語言表示式regexp

2017年04月14日 15:26:30 龍嘯614 閱讀數:647 標籤: go語言 正則表示式

C語言表示式使用詳解

標準的C和C++都不支援正則表示式,但有正則表示式的函式庫提供這功能. C語言處理正則表示式常用的函式有regcomp()、regexec()、regfree()和regerror()。 使用正則表示式步驟: 1)編譯正則表示式 regcomp() 2)匹配正則表示式 re

JAVA語言表示式實現密碼規則設定

<span style="font-size:18px;">密碼規則:長度不能小於6位,必須包含字母和數字。</span>public void say() { Scann

C語言表示式的匹配問題

題目: C語言正則表示式詳解 regcomp() regexec() regfree()詳解。 背景: 標準的C和C++都不支援正則表示式,但有一些函式庫可以輔助C/C++程式設計師完成這一功能,其中最著名的當數Philip Hazel的Perl-Compatible Re

Go語言表示式

package main import "bytes" import "fmt" import "regexp" func main() { //這個測試一個字串是否符合一個表示式。 match

Coursera-Getting and Cleaning Data-week4-R語言中的表示式以及文字處理

補上第四周筆記,以及本次課程總結。 第四周課程主要針對text進行處理。裡面包括 1.變數名的處理 2.正則表示式 3.日期處理(參見swirl lubridate包練習) 首先,變數名的處理,奉行兩個原則,1)統一大小寫tolower/toupper;2)去掉在匯入資料時,因為特殊字元導致的合併變

R語言:文字(字串)處理與表示式

這兩個函式返回向量水平的匹配結果,不涉及匹配字串的詳細位置資訊。 grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, useBytes =FALSE, invert = FALSE) grepl

R語言︱文字(字串)處理與表示式

處理文字是每一種計算機語言都應該具備的功能,但不是每一種語言都側重於處理文字。R語言是統計的語言,處理文字不是它的強項,perl語言這方面的功能比R不知要強多少倍。幸運的是R語言的可擴充套件能力很強,DNA/RNA/AA等生物序列現在已經可以使用R來處理。nchar字元的個數

go語言表示式

go語言之正則表示式 //regexp package main import ( "fmt" "regexp" ) func main() { //需要匹配的模式 //reg := regexp.MustCompile("\\w+") 正則表示式中的\需要轉義

Python自然語言處理—表示式檢測片語re.search()

1. 開頭和結尾 ^ $ import re import nltk wordlist = [w for w in nltk.corpus.words.words("en") if w.islower()] print([w for w in wordlist if re.search("^ed

C語言實現簡化的表示式

語法: 正則表示式和待匹配字串都是一行 “^” 標記正則表示式的開始 “$” 標記正則表示式的結束 “*” 匹配前面的子表示式零次或多次 “+” 匹配前面的子表示式一次或多次 “?” 匹配前面的子表示式零次或一次, 當該字元緊跟在任何一個其他限制符(*,+,?

C語言用regcomp、regexec、regfree和regerror函式實現表示式校驗

  前言    首先,祝大家國慶假期玩的嗨皮!可能有的人已經在回家的路上了,是不是都看不到我的真摯祝福了?    C語言對於一些東西的封裝比較少,比如正則表示式,但速度快一直使它立於不敗之地,今天就要介紹如何用C封裝。    一、正則表示式      1、介紹     應該都聽過正則吧?主要應用在字

nim語言表示式regex入門

nim語言的re模組是包裝了c語言的庫pcre. 提供了很多的proc供呼叫. 主要的 函式就是find, findBounds, findAll 1. findBounds查詢某個規則的字串. 例如:  import re let currentline =

【程式語言學習——python】表示式小作業

參考資料 https://www.cnblogs.com/tina-python/p/5508402.html 原資料 目標 將如上混雜在一列的資料按特徵分隔開。 程式碼 import xlrd import xlwt xlsfile=r'C:\Users\Ad

在linux下,如何在C語言中使用表示式(整理)

  一個正則表示式的教程可以參看(裡面有個測試正則表示式的工具)      正則表達是用來匹配字串的好東東。       如果使用者熟悉Linux下的sed、awk、grep或vi,那麼對正則表示式這一概念肯定不會陌生。由於它可以極大地簡化處理字串時的複雜度,因此現 在已

【傑瑞的專欄】架構師、指令碼語言專家;精通Python、Shell、表示式;熟悉Java、C、Tcl、Ruby、Scala、Perl等多種程式語言;在效能,開源,自動化測試方面有非常豐富的經驗

傑瑞的專欄 架構師、指令碼語言專家;精通Python、Shell、正則表示式;熟悉Java、C、Tcl、Ruby、Scala、Perl等多種程式語言;在效能,開源,自動化測試方面有非常豐富的經驗...