[英]Remove substring from string between special characters in R
我一直在尋找答案,但我失敗了。 我的問題有點奇怪,我還在學習正則表達式。 我想從這個實現:
str1 <- 'txt1/txt2/123|abc_def_123|1991-02-11'
像這樣的東西:
txt1|abc_def_123|1991-02-11
所以從/
(包括)到第一次出現|
應該被刪除。 到目前為止,我寫了這個:
sub("\\/.*\\|", "|", str1 )
但它會刪除最后一次出現的所有內容|
"txt1|1991-02-11"
我怎么能指出 substring 應該被刪除到他第一次出現|
?
您可以使用/[^|]*
,它采用第一個/
和之后的所有內容,只要它不是|
.
sub("/[^|]*", "", str1)
#[1] "txt1|abc_def_123|1991-02-11"
在您嘗試之后,您可以使您的正則表達式變得懶惰
sub("/.*?\\|", "|", str1 )
#[1] "txt1|abc_def_123|1991-02-11"
您可以使用帶有正前瞻的否定字符 class
/[^|]*(?=\|)
為了不跨越換行符,您可以擴展否定字符 class:
/[^|\r\n]*(?=\|)
str1 <- 'txt1/txt2/123|abc_def_123|1991-02-11'
sub("/[^|]*(?=\\|)", "", str1, perl=TRUE)
Output
[1] "txt1|abc_def_123|1991-02-11"
另一種方法是使用反向引用:
sub("(^.*)/.*/.*?(\\|.*$)", "\\1\\2", str1)
[1] "txt1|abc_def_123|1991-02-11"
在這里,雙重反向引用\\1\\2
'召回'兩個捕獲組(...)
中的字符串,而捕獲組中未包含的部分被刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.