![](/img/trans.png)
[英]How to keep values and remove the others (attributes html string) on a regular expression?
[英]Regular expression to keep some matches, remove others
我在使用這個正則表達式時遇到了麻煩。 考慮以下向量。
> vec <- c("new jersey", "south dakota", "virginia:chincoteague",
"washington:whidbey island", "new york:main")
在那些包含:
字符串中,我想只保留帶有main
字符串:
,導致
[1] "new jersey" "south dakota" "new york:main"
到目前為止,我只能用這種丑陋的嵌套噩夢到達那里,這顯然遠非最佳。
> g1 <- grep(":", vec)
> vec[ -g1[grep("main", grep(":", vec, value = TRUE), invert = TRUE)] ]
# [1] "new jersey" "south dakota" "new york:main"
如何編寫單個正則表達式來保持:main
但刪除其他包含:
?
使用|
(請選擇一個包含:main
或不包含:
在所有):
> vec <- c("new jersey", "south dakota", "virginia:chincoteague",
+ "washington:whidbey island", "new york:main")
> grep(":main|^[^:]*$", vec)
[1] 1 2 5
> vec[grep(":main|^[^:]*$", vec)]
[1] "new jersey" "south dakota" "new york:main"
你可以使用這個簡單的正則表達式:
^[^:]+(?::main.*)?$
見演示
不確定確切的R代碼,但是類似的東西
grepl("^[^:]+(?::main.*)?$", subject, perl=TRUE);
說明
^
anchor斷言我們位於字符串的開頭 [^:]+
匹配所有不是冒號的字符 (?::main.*)?
匹配冒號, main
和后面的任何字符 $
anchor斷言我們在字符串的末尾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.