【问题标题】:R-lang / How to use R for regex (Perl) extractionR-lang / 如何使用 R 进行正则表达式 (Perl) 提取
【发布时间】:2015-02-16 09:40:12
【问题描述】:

我使用了一个用于 javascript 的正则表达式测试器来提出以下 3 个正则表达式案例,以从文本中提取不同类型的 URL。对于这些条件,我想在 R 中使用这些正则表达式(正则表达式?):

http 网址:(https?):\/\/(www\.)?[^\\s]+

位网址:[^https?:\/\/](bitly\.com|bit.ly)[^\s]+

www 网址:\bwww\.[^\s]+

在阅读 R 中的正则表达式后,似乎使用 PERL=TRUE 将允许从 javascript 进行转换 -> R.我在一些测试示例中尝试了我的最后一个正则表达式:

grep("\\<(\bwww\\.[^\\s]+)\\>", 
     c("wwww.google.com and other stuff", 
       "http.www.google.com"), 
     perl=TRUE, value=TRUE)

但我收到以下错误:

错误:"grep("\" 中出现意外符号, c("www.google.com 和其他东西", "http.www.google.com") perl"

在 R 中使用这种类型的正则表达式的语法是什么?

【问题讨论】:

  • 您必须在 R 中逃脱转义。例如,\\s。一种转义用于在 R 中输入字符串,第二种转义用于正则表达式。
  • 请注意qdapRegex::rm_url 可以为您完成这项工作
  • 这实际上是由您的操作系统引擎完成的。如果您的意图是使用字符类搜索 ...." " 的否定,那么您应该使用 [^ ]
  • 即使修复了 \\s,它也不高兴。 @RichardScriven,qdapRegex 似乎无法处理位 URL?

标签: javascript regex r pcre


【解决方案1】:

在 R 中使用这种类型的正则表达式的语法是什么?

The R Reference Index,正则表达式:

类 Perl 正则表达式


为扩展正则表达式描述的所有正则表达式 除了‘\’之外都被接受:在 Perl 中所有反斜杠 元字符是字母数字,反斜杠符号总是 解释为文字字符。

所以,如果你想使用\&lt;\&gt;,你一定不能使用perl=TRUE

除此之外,您忘记将\b 中的反斜杠加倍。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2022-10-15
    相关资源
    最近更新 更多