regex - 使用正则表达式拆分字符串

标签 regex r strsplit

我希望拆分一个通用形式的字符串,其中方括号表示字符串的“部分”。前任:

x <- "[a] + [bc] + 1"

并返回一个如下所示的字符向量:
"[a]"  " + "  "[bc]" " + 1"

编辑:最终使用了这个:
x <- "[a] + [bc] + 1"
x <- gsub("\\[",",[",x)
x <- gsub("\\]","],",x)
strsplit(x,",")

最佳答案

我看过 TylerRinker 的代码并怀疑它可能比这更清楚,但这可能是学习不同功能集的方式。 (在我注意到它在空格上 split 之前,我更喜欢他。)我尝试将其调整为与 strsplit 一起使用。但该功能总是删除分隔符。
也许这可以用来制作 newstrsplit在分隔符处 split 但将它们留在里面?可能不需要在第一个或最后一个位置拆分并区分打开和关闭分隔符。

scan(text=   # use scan to separate after insertion of commas
            gsub("\\]", "],",   # put commas in after "]"'s
            gsub(".\\[", ",[",  x)) ,  # add commas before "[" unless at first position
        what="", sep=",")    # tell scan this character argument and separators are ","
#Read 4 items
#[1] "[a]"  " +"   "[bc]" " + 1"

关于regex - 使用正则表达式拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15573887/

相关文章:

python - django 在列表中使用正则表达式排除 url

基于列子串的行均值

r - 根据观察复制和修改数据帧的行 [R]

r - 基于分隔符将快速 data.table 列拆分为多行

删除r中列中的特定字符

php - 在 Laravel 验证正则表达式规则中验证纬度/经度 - preg_match() : No ending delimiter '/' found

regex - Nginx 阻止/拒绝访问多个位置正则表达式

python - 如何从字符串开头删除重复字符

r - 按周期对数据帧中的数据进行分组

r - 使用索引对 data.table 中的行进行子集化