Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 提取方括号之间的最后一个子字符串_R_Regex_Rselenium - Fatal编程技术网

R 提取方括号之间的最后一个子字符串

R 提取方括号之间的最后一个子字符串,r,regex,rselenium,R,Regex,Rselenium,我有一列数据,需要从中提取一个alphnumeric字符串/因子示例 Column x [ghjg6] [fdg5] [113gi4lki] great work [xzswedc: acf] [xzt8] [111eerrh5] [asd2] [1] [113vu17hg 115er5lgr 112cgnmbh ] get out 我想在一个单独的列中获取方括号中的数据[113gi4lki],[111eerrh5]和[113vu17hg 115er5lgr 112cgnmbh]。请告知。

我有一列数据,需要从中提取一个alphnumeric字符串/因子示例

Column x
[ghjg6] [fdg5] [113gi4lki] great work 
[xzswedc: acf] [xzt8] [111eerrh5] 
[asd2] [1] [113vu17hg 115er5lgr 112cgnmbh ] get out
我想在一个单独的列中获取方括号中的数据
[113gi4lki]
[111eerrh5]
[113vu17hg 115er5lgr 112cgnmbh]
。请告知。

您可以:

Column.x <- c(
"[ghjg6] [fdg5] [113gi4lki] great work",
"[xzswedc: acf] [xzt8] [111eerrh5]",
"[asd2] [1] [113vu17hg 115er5lgr 112cgnmbh ] get out")
y <- gsub(".*\\[", "[", Column.x)
gsub("\\].*", "]", y)
如果需要,可以将这两个步骤放在一起:

gsub("\\].*", "]", gsub(".*\\[", "[", Column.x))
你可以做:

Column.x <- c(
"[ghjg6] [fdg5] [113gi4lki] great work",
"[xzswedc: acf] [xzt8] [111eerrh5]",
"[asd2] [1] [113vu17hg 115er5lgr 112cgnmbh ] get out")
y <- gsub(".*\\[", "[", Column.x)
gsub("\\].*", "]", y)
如果需要,可以将这两个步骤放在一起:

gsub("\\].*", "]", gsub(".*\\[", "[", Column.x))

要获取最后一组
[…]
括号内的文本,可以使用具有以下模式的

".*\\[([^][]+)].*"
模式匹配:

  • *
    -在后续子模式的最后一次出现之前,任何0+字符都会贪婪地、尽可能多地保留
  • \\[
    -文本
    [
    (必须在括号表达式之外转义)
  • ([^][]+)
    -第1组(后面称为
    \1
    )匹配除
    ]
    [
  • ]
    -文本
    ]
    (无需在括号表达式外转义它
  • *
    -字符串的其余部分
:

如果要删除没有
[…]
的条目(如我的测试集中的最后一个条目),请使用


请参阅。

要获取最后一组
[…]
括号内的文本,您可以使用具有以下模式的

".*\\[([^][]+)].*"
模式匹配:

  • *
    -在后续子模式的最后一次出现之前,任何0+字符都会贪婪地、尽可能多地保留
  • \\[
    -文本
    [
    (必须在括号表达式之外转义)
  • ([^][]+)
    -第1组(后面称为
    \1
    )匹配除
    ]
    [
  • ]
    -文本
    ]
    (无需在括号表达式外转义它
  • *
    -字符串的其余部分
:

如果要删除没有
[…]
的条目(如我的测试集中的最后一个条目),请使用



请参阅。

您尝试了什么?请显示针对此特定问题的代码,并解释您在哪里使用stuckI-Treaded-library(stringr)stru-extract(str1,“\[(\\w+\\s+{2,}\\w+\]))我的初始代码打开一个链接并读取一个html表。从中我提取了一列,其中包含如上所示的数据,我想提取上面所示的数据以供进一步计算。@jogo感谢您提供的链接您尝试了什么?请显示您针对此特定问题的代码,并解释您在哪里使用stuckI Tested library(stringr)str\u摘录(str1,“\[(\\w+\\s+{2,}\\w+\]”)我的初始代码打开一个链接并读取一个html表。从那里我获取了一列,其中包含如上所示的数据,我想提取上面所示的数据以供进一步计算。@jogo感谢您提供的链接Hanks这很好,我可以直接对长度为25的数据帧执行此操作吗?我是如何在该列上执行此操作的?谢谢,它只是缺少一行或两行拉错了字符串。对于数据帧,您可以执行
df[]感谢这项工作非常好,我可以直接对长度为25的数据帧执行此操作吗,以及如何对列执行此操作感谢,只是缺少一行或两行拉错了字符串。对于数据帧,您可以执行
df[]Stribizew感谢您提供上述脚本。我还提出了类似于
str_extract(df$Subject,“[:punct:+([:digit:+[:alpha:+])+[:punct:])的其他内容->df$x2
提供了90%的正确数据,但是如果您的代码行给我剩余的10%,那么您的代码行将提供90%的正确数据。如果我将这两行都用作df$x2列1,并将脚本的输出用作列2,那么我将在列2中获得一些垃圾数据。我现在有两件事要做:1.同时使用代码和合并,这两行将丢弃垃圾数据,并为我提供100%的needed数据2.尝试在我的脚本格式中为您的代码寻找类似的语法。`The
str_extract(df$Subject,“[:punt:][+([:digit:][+[:alpha:][+)+[:p‌​unct:”
是错误的。您需要在括号表达式中使用POSIX字符类。此外,我猜通过使用
[[:digit:]+[:alpha:]+
您想要匹配字母数字?然后使用
[[:alnum:]
并将
[[:putt:]
部分变成lookaheads(或者-如果您只有
[…]
,请使用
\\[
]
)。请尝试
str_提取(df$Subject,“(?@kishore:请再次解释规则。请修改您的问题并进行相应编辑,因为现在还不清楚要求是什么。@Wiktor Stribiżew,我们可以聊天吗,我可以解释清楚吗?@kishore尝试在此处添加更多消息。Stribizew感谢您的上述脚本。我还想出了类似于 str_extract(df$Subject,“[:punct:][+([:digit:][+[:alpha:][+)+[:punct:]”)->df$x2
提供了90%的正确数据,但是如果您的代码行给我剩余的10%,那么您的代码行将提供90%的正确数据。如果我将这两行都用作df$x2列1,并将脚本的输出用作列2,那么我将在列2中获得一些垃圾数据。我现在有两件事要做:1.同时使用代码和合并,这两行将丢弃垃圾数据,并为我提供100%的needed数据2.尝试在我的脚本格式中为您的代码寻找类似的语法。`The
str_extract(df$Subject,“[:punt:][+([:digit:][+[:alpha:][+)+[:p‌​unct:”
是错误的。您需要在括号表达式中使用POSIX字符类。此外,我猜通过使用
[[:digit:]+[:alpha:]+
您想要匹配字母数字?然后使用
[[:alnum:]
并将
[[:putt:]
部分变成lookaheads(或者-如果您只有
[…]
,请使用
\\[
]
)。请尝试
str_extract(df$Subject,”(?@kishore:请再次解释规则。请修改您的问题并进行相应编辑,因为现在已经不清楚要求是什么。@Wiktor Stribiżew,我们可以聊天吗,我可以
df$x = sub(".*\\[([^][]+)].*|.*", "\\1", df$x)