【问题标题】:How to select everything before the first uppercase symbol that follows a lowercase symbol如何选择小写符号后面的第一个大写符号之前的所有内容
【发布时间】:2022-06-11 02:41:40
【问题描述】:

举个例子:

Hello my name is Karl, I am finHello my name is Karl, I am fine

我想删除第二个 Hello 之前的所有内容。所以:

Hello my name is Karl, I am fine.

如果你也解释一下正则表达式中的所有函数,那就太好了。

我意识到这需要使用 str_remove() 来完成。

【问题讨论】:

    标签: regex stringr


    【解决方案1】:
    .*(?=[a-z][A-Z]).
    
    • .* 匹配所有内容直到前瞻断言条件
    • (?= Lookahead assertion - 断言以下正则表达式匹配
      • [a-z][A-Z]匹配连续的小写和大写字母
    • ) 关闭前瞻
    • . 在前瞻之后再匹配一个字符,因为最后一个小写字母在它下面

    demo

    R 示例

    library(stringr)
    
    s <- "Hello my name is Karl, I am fineHello my name is Karl, I am fine"
    print(str_match(s, ".*(?=[a-z][A-Z]).")[1])  # Hello my name is Karl, I am fine
    

    【讨论】:

    • 但这不是矢量化的,它不是 str_remove()。重要的是它必须是 str_remove(),因为如果小写字母后面没有大写字母,它将给出 NA。
    • @GiulioGCantone,请检查我的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 2018-07-04
    • 2016-11-08
    相关资源
    最近更新 更多