gpt4 book ai didi

regex - 在第一个和最后一个逗号上拆分字符串

转载 作者:行者123 更新时间:2023-12-04 22:46:28 25 4
gpt4 key购买 nike

我想在第一个和最后一个逗号上拆分字符串。每个字符串至少有两个
逗号。下面是一个示例数据集和所需的结果。

这里有一个类似的问题询问如何在第一个逗号上拆分:Split on first comma in string

在这里我问了如何在前两个冒号上拆分字符串:Split string on first two colons

谢谢你的任何建议。我更喜欢基础 R 中的解决方案。抱歉,如果这是重复的。

my.data <- read.table(text='

my.string some.data
123,34,56,78,90 10
87,65,43,21 20
a4,b6,c8888 30
11,bbbb,ccccc 40
uu,vv,ww,xx 50
j,k,l,m,n,o,p 60', header = TRUE, stringsAsFactors=FALSE)

desired.result <- read.table(text='

my.string1 my.string2 my.string3 some.data
123 34,56,78 90 10
87 65,43 21 20
a4 b6 c8888 30
11 bbbb ccccc 40
uu vv,ww xx 50
j k,l,m,n,o p 60', header = TRUE, stringsAsFactors=FALSE)

最佳答案

您可以使用 \K保持文本已经匹配的结果的运算符和一个否定的前瞻断言来做到这一点(几乎,中间部分的开头有一个恼人的逗号,我还没有在 strsplit 中去掉它)。但我喜欢把它作为构建正则表达式的练习......

x <- '123,34,56,78,90'
strsplit( x , "^[^,]+\\K|,(?=[^,]+$)" , perl = TRUE )
#[[1]]
#[1] "123" ",34,56,78" "90"

说明:
  • ^[^,]+ : 从字符串的开头匹配一个或多个不是 , 的字符
  • \\K : 但不要在匹配中包含那些匹配的字符
  • 所以第一个匹配是第一个逗号...
  • | : 或者你可以匹配...
  • ,(?=[^,]+$) :,只要后面跟着 [ (?=...) ] 一个或多个不是 , 的字符直到字符串结束( $ )...
  • 关于regex - 在第一个和最后一个逗号上拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23961022/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com