gpt4 book ai didi

regex - 重新排列一个字符串

转载 作者:行者123 更新时间:2023-12-02 17:28:08 25 4
gpt4 key购买 nike

我有一个字符向量,其中一些条目末尾有特定的模式。我想从最后删除这个模式并将其放在其余部分的前面。

示例:

#My initial character vector
names <- c("sdadohf abc", "fsdgodhgf abc", "afhk xyz")
> names
[1] "sdadohf abc" "fsdgodhgf abc" "afhk xyz"

#What I want is to move "abc" to the front
> names
[1] "abc sdadohf" "abc fsdgodhgf" "afhk xyz"

是否有一种简单的方法可以实现此目的,还是我必须编写自己的函数?

最佳答案

首先让我们再添加一个字符串到您的向量中,一个文本之间有多个空格。

names <- c("sdadohf abc", "fsdgodhgf abc", "afhk xyz", "aksle   abc")

您可以在 sub() 中使用捕获组。

sub("(.*?)\\s+(abc)$", "\\2 \\1", names)
# [1] "abc sdadohf" "abc fsdgodhgf" "afhk xyz" "abc aksle"

正则表达式解释由 regex101 提供:

  • (.*) 第一个捕获组 - 匹配零到无限次之间的任何字符(换行符除外),次数尽可能少,根据需要扩展
  • \\s+ 匹配任何空白字符 [\r\n\t\f ] 一次到无限次,尽可能多次,尽可能返回需要
  • (abc) 第二个捕获组 - abc 按字面匹配字符 abc,并且 $ 断言位置在字符串的结尾

当我们交换 "\\2\\1" 中的组时,我们将第二个捕获组 abc 带到字符串的开头。

感谢@Jota 和@docendodiscimus 帮助改​​进我原来的正则表达式。

关于regex - 重新排列一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36826633/

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