gpt4 book ai didi

regex - 使用 R 提取高达 "/"的字符

转载 作者:行者123 更新时间:2023-12-04 15:33:04 26 4
gpt4 key购买 nike

我正在尝试使用 R 提取“/”字符前后的字符。

例如,我可以使用以下内容获取标签:

s <- "hello/JJ world/NN"

# get the tags
sapply(s, function(x){gsub("([a-z].*?)/([A-z].*?)", "\\2", x)})

返回
"JJ NN"

但是,当我尝试提取“/”或“ token ”之前的字符时,使用以下命令:
sapply(s, function(x){gsub("([a-z].*?)/([A-z].*?)", "\\1", x)})

我得到
"helloJ worldN"

我怎样才能得到“hello world”,为什么标签的第一个字母会滑到那里?

最佳答案

我认为您在输出中保留这些字母的原因是您的正则表达式。 [A-Z] (必须有 Z ,我猜 z 是一个错字 - 见 [A-Za-z] Shorthand class? )没问题,但后面跟着一个 .*?可以匹配除换行符以外的 0 个或无限个字符的惰性点匹配组。所以,它will match none .

您需要一个 +量词匹配 1 个或多个字符并将其应用于字符类 [a-zA-Z] :

s <- "hello/JJ world/NN"
sapply(s, function(x){gsub("([a-zA-Z])/[a-zA-Z]+", "\\1", x)})

demo

我删除了第二组,因为您没有使用它。

关于regex - 使用 R 提取高达 "/"的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31777217/

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