[英]R Ignore character within a Regex string
我到處尋找一些regex
,這將導致R
忽略正則表達式字符串中的下一個字符。
例如,給定myvector
:
myvector <- c("abcdef", "ghijkl", "mnopqrs")
和regex
字符串:
regexstring <- "[a-z]{3}XXXXXXXXX "
其中包含一些未知字符XXXXXXXXX,我想告訴R
忽略正則表達式字符串本身中的最后一個空格。
運行以下命令后,
regexstring <- "[a-z]{3} "
sub(regexstring, " ", myvector)
給,
"abcdef" "ghijkl" "mnopqrs"
因為任何字符串中都沒有空格。 但希望在包含XXXXXXXXX之后,我將獲得與運行相同的輸出
regexstring <- "[a-z]{3}"
sub(regexstring, " ", myvector)
這是:
" def" " jkl" " pqrs"
我無法擦除最終空間或使用trimws()等,而且我看不到任何使R忽略最終空間的方法。 是否有任何XXXXXXXXX可以這樣做? 謝謝。
通過使用(?x)
自由行間距內聯修飾符代替XXX
可以使最終空間成為格式空間,並傳遞perl=TRUE
參數以確保使用PCRE regex引擎解析該模式。
myvector <- c("abcdef", "ghijkl", "mnopqrs")
regexstring <- "[a-z]{3}(?x) "
sub(regexstring, " ", myvector, perl=TRUE)
## => [1] " def" " jkl" " pqrs"
參見R演示 。
請注意,在模式中間放置(?x)
將會影響在模式位置之后 (右側)使用的任何文字空白,直到模式結束或直到(?-x)
修飾符選項。
在Wiktor Stribizew的答案的基礎上,我能夠弄清楚如何使用Stringr做到這一點:
require(stringr)
myvector <- c("abcdef", "ghijkl", "mnopqrs")
regexstring <- regex("[a-z]{3}# ", comments = T)
myvector %>% str_replace(regexstring, " ")
[1] " def" " jkl" " pqrs"
這樣,我就能修改正則表達式字符串本身(regexstring),而不是替換命令(sub或str_replace)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.