【问题标题】:split character at deliminator conditionally negative lookahead assertion在分隔符处拆分字符有条件地否定前瞻断言
【发布时间】:2019-04-22 08:46:48
【问题描述】:

我想在.: 处拆分字符串,除非下一个字符是)

下面这个问题:R strsplit: Split based on character except when a specific character follows为什么不是

strsplit("Glenelg (Vic.)",'\\.|:(?!\\))', perl = TRUE)

返回

[[1]]
[1] "Glenelg (Vic)" 

而是在. 处分裂,如下所示:

[1] "Glenelg (Vic" ")"           

【问题讨论】:

    标签: r regex pcre


    【解决方案1】:

    没有正确分组。 \.|:(?!\)) 匹配字符串中任意位置的 . 或不跟随 ):。如果您将.: 模式分组,'(?:\\.|:)(?!\\))',它将起作用。

    但是,您可以使用基于字符类的更好的正则表达式版本:

    strsplit("Glenelg (Vic.)",'[.:](?!\\))', perl = TRUE)
    [[1]]
    [1] "Glenelg (Vic.)"
    

    这里,[.:](?!\)) 匹配.:,两者都没有紧跟)

    请参阅regex demo

    【讨论】:

      【解决方案2】:

      你也可以使用stringr

      stringr::str_split("Glenelg (Vic.)","[\\.:](?!\\))")
      [[1]]
      [1] "Glenelg (Vic.)"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多