加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式从头到尾抓住n个字符

发布时间:2020-12-14 06:24:12 所属栏目:百科 来源:网络整理
导读:我真的花时间学习正则表达式,我正在玩不同的玩具场景.我无法工作的一个设置是从字符串的开头抓取到n出现的字符,其中n 1. 在这里,我可以从字符串的开头抓到第一个下划线,但我不能将其概括为第二个或第三个下划线. x - c("a_b_c_d","1_2_3_4","_?_._:")gsub("_
我真的花时间学习正则表达式,我正在玩不同的玩具场景.我无法工作的一个设置是从字符串的开头抓取到n出现的字符,其中n> 1.

在这里,我可以从字符串的开头抓到第一个下划线,但我不能将其概括为第二个或第三个下划线.

x <- c("a_b_c_d","1_2_3_4","<_?_._:")

gsub("_.*$","",x)

Here's what I'm trying to achieve with regex. (`sub`/`gsub`):

## > sapply(lapply(strsplit(x,"_"),"[",1:2),paste,collapse="_")
## [1] "a_b" "1_2" "<_?"

#or

## > sapply(lapply(strsplit(x,1:3),collapse="_")
## [1] "a_b_c" "1_2_3" "<_?_."

相关文章:regex from first character to the end of the string

怎么样:
gsub('^(.+_.+?).*$','1',x)
# [1] "a_b" "1_2" "<_?"

或者,您可以使用{}来表示重复次数……

sub('((.+_){1}.+?).*$',x)  # {0} will give "a",{1} - "a_b",{2} - "a_b_c" and so on

所以如果你想匹配第n个,你就不必重复自己……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读