[英]Replace a specific character in a string with gsub() and Regex
我有一个很长的字符向量,有些元素丢失了“with”这个词。 我想把它加到元素中,但是不需要加词的元素也加了。
我使用gsub()
函数来做到这一点,我知道我需要编写一个适当的正则表达式,但我不知道如何编写它。 我认为正则表达式应该匹配以“ageup”开头并且后面没有数字的元素,然后将包含“ageup”的machted元素替换为“ageupwith”
t <- c('ageupwith65','ageup60')
gsub('ageup','ageupwith',t)
gsub('[ageup][^0-9]','ageupwith',t,fixed = T)
我尝试了两种方法,但它们都是不正确的。
任何帮助将不胜感激!
匹配ageup
后跟一个可选的 with (? 表示可选) 并用ageupwith
替换所有这些。 我们在这里使用了sub
,因为每个组件中只有一个匹配项,但如果有多个匹配项,则使用gsub
。
sub("ageup(with)?", "ageupowith", t)
## [1] "ageupwith65" "ageupwith60"
您需要在这里进行负面展望:
t <- c('ageupwith65','ageup60')
sub('^ageup(?!\\d)', 'ageupwith', t, perl=TRUE)
要替换后面跟有数字的那些ageup
,请使用正向前瞻:
sub('^ageup(?=\\d)', 'ageupwith', t, perl=TRUE)
请注意perl=TRUE
参数,该参数允许使用支持环视的 PCRE 正则表达式引擎。
sub
在找到模式后只会执行一个正则表达式替换:
^
- 字符串的开始ageup
- ageup
字符串(?!\\d)
- 断言没有数字的否定前瞻立即在右侧找到(?=\\d)
- 一个肯定的前瞻断言在当前位置的右侧有一个数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.