如何使用 gsub 从字符串中删除字符,但有例外
How to use gsub to remove character from string, with exceptions
我正在从 R 中的字符串中删除所有换行破折号后跟 space('- '),除了前面有 'en' 的那些(与荷兰语语法有关) ).使用此示例 ()
我接近答案了,但就是无法完全弄明白。
这是一个字符串的例子
string <- "word1 long- er word2, word3 en- word4"
预期结果:
"word1 longer word2, word3 en- word4"
一个选项可以是否定的正则表达式环视以匹配 -
后跟一个或多个空格 (\s+
) 而不是 (!
) 前面有字符 'en'
gsub("(?<!en)(-\s+)", "", string, perl = TRUE)
#[1] "word1 longer word2, word3 en- word4"
或使用 SKIP/FAIL
使匹配的模式在模式前面有 'en'
时失败
gsub("(en-\s+)(*SKIP)(*FAIL)|-\s+", "", string, perl = TRUE)
#[1] "word1 longer word2, word3 en- word4"
我正在从 R 中的字符串中删除所有换行破折号后跟 space('- '),除了前面有 'en' 的那些(与荷兰语语法有关) ).使用此示例 (
这是一个字符串的例子
string <- "word1 long- er word2, word3 en- word4"
预期结果:
"word1 longer word2, word3 en- word4"
一个选项可以是否定的正则表达式环视以匹配 -
后跟一个或多个空格 (\s+
) 而不是 (!
) 前面有字符 'en'
gsub("(?<!en)(-\s+)", "", string, perl = TRUE)
#[1] "word1 longer word2, word3 en- word4"
或使用 SKIP/FAIL
使匹配的模式在模式前面有 'en'
gsub("(en-\s+)(*SKIP)(*FAIL)|-\s+", "", string, perl = TRUE)
#[1] "word1 longer word2, word3 en- word4"