【问题标题】:Grammar of regular expression in RR中的正则表达式语法
【发布时间】:2017-08-07 23:55:48
【问题描述】:

我是新的正则表达式。假设我想得到一个字符串“1994-02-14 00:00:00, 12345”的正则表达式,现在我有了一个表达式:

.*\\d{4}-\\d{2}-\\d{2}[\\d{2}-\\d{2}-\\d{2}]?\,\\d{5}.

但是当我使用

grepl(pattern = "^.*\\d{4}-\\d{2}-\\d{2}[\\d{2}-\\d{2}-\\d{2}]?\,\\d{5}", x= x )

它给出了以下错误:'\,' is an unrecognized escape in string started "".*\d{4}-\d{2}-\d{2}[\d{2}-\ d{2}-\d{2}]?\," 我应该如何解决这个错误?换句话说,上述字符串的正确正则表达式是什么?

谢谢!!

【问题讨论】:

  • 您的模式似乎有几个问题,但您具体询问的错误似乎是由于逗号前面的单个反斜杠,靠近模式的末尾。
  • 正如消息所说,你有\, 你可能想要\\,
  • 去掉逗号前的反斜杠(逗号不是特殊字符,不需要转义)并在可选部分周围使用圆括号,而不是方括号。此外,在某些应该是冒号的地方还有减号。
  • 我可以建议你使用rebus 包吗?

标签: r regex


【解决方案1】:

你的意思是这样的:

grepl(pattern = "^.*\\d{4}-\\d{2}-\\d{2} (\\d{2}:\\d{2}:\\d{2})?, \\d{5}", x= x )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 2020-09-10
    • 2016-10-08
    • 2016-08-18
    • 2011-03-22
    • 2011-08-23
    相关资源
    最近更新 更多