从某个字符开始的正则表达式

时间:2018-07-13 14:18:20

标签: r regex

示例:List<int> 我正在尝试从上述包含括号的字符串中提取文本。我想从"example._AL(5)._._4500_GRE/Jan_2018"开始提取所有内容。

输出应类似于:AL

1 个答案:

答案 0 :(得分:1)

关于我们可以假设的内容存在一些疑问,但这是一些可以做出各种假设的变体。

1)单词()将删除第一个单词之前的所有内容,然后加上括号。

  • “ ^”匹配字符串的开头
  • “。*?”是最短的匹配项,只要我们仍然匹配其余的正则表达式
  • “ \\ w +”匹配一个单词
  • “ \\(”匹配左括号
  • (...)组成一个捕获组,替换字符串可以称为“ \\ 1”

代码

x <- "example.AL(5)._._4500_GRE/Jan_2018"
sub("^.*?(\\w+\\()", "\\1", x)
## [1] "AL(5)._._4500_GRE/Jan_2018"

1a)或匹配一个单词,后跟(,然后是所有内容并提取出来:

library(gsubfn)
strapplyc(x, "\\w+\\(.*", simplify = TRUE)
## [1] "AL(5)._._4500_GRE/Jan_2018"

2)AL(或如果我们知道单词是AL,则:

sub("^.*?(AL\\(.*)", "\\1", x)
## [1] "AL(5)._._4500_GRE/Jan_2018"

3)删除最多第一个点,或者如果我们知道要删除的部分是第一个点之前(包括第一个点):

sub("^.*?\\.", "", x)
## [1] "AL(5)._._4500_GRE/Jan_2018"

4)点分隔的字段如果输入的格式是点分隔的字段,我们可以像这样一次解析所有内容:

read.table(text = x, sep = ".", as.is = TRUE)
##        V1    V2 V3                 V4
## 1 example AL(5)  _ _4500_GRE/Jan_2018