正则表达式从头到尾抓住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个,你就不必重复自己……

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...