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

前端之家收集整理的这篇文章主要介绍了正则表达式从头到尾抓住n个字符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我真的花时间学习正则表达式,我正在玩不同的玩具场景.我无法工作的一个设置是从字符串的开头抓取到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个,你就不必重复自己……

猜你在找的正则表达式相关文章