r-在不匹配的组之后保留空格



我有一个字符串,其形式为:CCD_ 1。CCD_ 2总是存在的,但是其它部分可能存在也可能不存在。有时(blah)后面只有很大的空间,有时还有更多的文本。

我试图只得到第二个括号中的whats,在这种情况下是blah。我(在这个网站上的人的帮助下(已经到了拥有这个正则表达式的地步:

gsub(".*text\((.{5})\)(?:\((.{5})\).*)?", "\2", string)

如果(stuff)(blahh)都存在但空间和text3不存在则给出期望的结果。这个

gsub(".*text2\((.{5})\)(?:\((.{5})\))?.*", "\2", string)

如果只有stuff存在,则不给予任何回报,这是我想要的,但如果两者都存在,则也不给予任何东西。

如果有人能帮我找出如何只获得blah,我将不胜感激。

您可以使用

string <- "text1 text2(stuff)(blahh)  text3"
sub(".*text2\([^()]*\)(?:\(([^()]*)\))?.*", "\1", string, perl=TRUE)
# => blah

请参阅regex演示和R演示。

详细信息

  • string <- "text1 text2(stuff)(blahh) text3"0-尽可能多的任何0个或多个字符(换行字符除外(
  • text2\(-文字text2(文本
  • [^()]*-除()之外的零个或多个字符
  • )-一个)字符
  • (?:(([^()]*)))?-可选的非捕获组:
    • (-一个text2(stuff)0字符
    • ([^()]*)-第1组(替换模式中的1指的是使用该组捕获的文本(:除()之外的零个或多个字符
    • )-)字符
  • .*-尽可能多的任意0个或多个字符(换行字符除外(

最新更新