gpt4 book ai didi

regex - R:反斜线(\)

转载 作者:行者123 更新时间:2023-12-03 16:09:18 25 4
gpt4 key购买 nike

我正在尝试在第一个反斜杠之前提取字符串的一部分,但似乎无法正常工作。

根据strsplit的手册页以及在线搜索之后,我尝试了多种使其工作的方法。

在我的实际情况中,字符串位于我从数据库连接中获得的数据帧中,但是我可以使用以下方法简化这种情况:

> strsplit(“BLAAT1\022E:\\BLAAT2\\BLAAT3”,“\\”,fixed = TRUE)
[[1]
[1]“BLAAT1\022E:”“BLAAT2”“BLAAT3”

> strsplit(“BLAAT1\022E:\\BLAAT2\\BLAAT3”,“\\”,fixed = FALSE)
strsplit中的错误(“BLAAT1\022E:\\BLAAT2\\BLAAT3”,“\\”,已固定= FALSE):
无效的正则表达式“\”,原因“尾随反斜杠”

> strsplit(“BLAAT1\022E:\\BLAAT2\\BLAAT3”,“\\\\”,fixed = TRUE)
[[1]
[1]“BLAAT1\022E:\\BLAAT2\\BLAAT3”

> strsplit(“BLAAT1\022E:\\BLAAT2\\BLAAT3”,“\\\\”,fixed = FALSE)
[[1]
[1]“BLAAT1\022E:”“BLAAT2”“BLAAT3”

预期的输出还将在BLAAT1和022E之间在\上分割:

提前致谢

最佳答案

如果您将正则表达式与strsplit函数一起使用,则可以将文字反斜杠编码为两个文字反斜杠(因为文字\是一种特殊的regex元字符,用于形成regex转义符,例如\d\w等),但是由于R字符串文字支持字符串转义序列(例如用于回车的"\r",用于换行符的"\n"),文字反斜杠需要用双反斜杠定义。

因此,"\\"是一个文字\,并且一个与文字反斜杠字符相匹配的正则表达式模式\\,应使用4个反斜杠"\\\\"进行编码。

这是您可以使用的正则表达式:它分为\non-printable character:

strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3","\\\\|[^[:print:]]",fixed=FALSE)
# [1] "BLAAT1" "E:" "BLAAT2" "BLAAT3"

参见 IDEONE demo

关于regex - R:反斜线(\),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33210280/

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