如何使用 POSIX 样式正则表达式从此字符串中仅提取 DATABASE_NAME?
st <- "MICROSOFT_SQL_SERVER.DATABASE\INSTANCE.DATABASE_NAME."
首先,这会产生一个错误
Error: '\I' is an unrecognized escape in character string starting "MICROSOFT_SQL_SERVER.DATABASE\I"
我在想类似的事情
sub(".*\\.", st, "")
最佳答案
第一个问题是您需要转义字符串中的 \
:
st <- "MICROSOFT_SQL_SERVER.DATABASE\\INSTANCE.DATABASE_NAME."
至于主要问题,这将从您给出的字符串中返回您想要的位:
> sub("\\.$", "", sub("[A-Za-z0-9\\._]*\\\\[A-Za-z]*\\.", "", st))
[1] "DATABASE_NAME"
但更简单的解决方案是拆分 \\.
并选择最后一个 block :
> strsplit(st, "\\.")[[1]][3]
[1] "DATABASE_NAME"
或者稍微自动化一点
> sst <- strsplit(st, "\\.")[[1]]
> tail(sst, 1)
[1] "DATABASE_NAME"
关于regex - R:使用 POSIX 正则表达式从字符串中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5685810/