【问题标题】:Regex extraction data before vs after comma in R正则表达式在R中逗号之前或之后提取数据
【发布时间】:2015-10-12 03:18:41
【问题描述】:

我是一个正则表达式初学者,因为我通常不处理文本。我有一个非常简单的问题。我设法构造了以下正则表达式来提取逗号后的数据:

sub('.*,\\s*','', X)

其中 X 是我正在搜索的列。

我现在想单独提取逗号之前的数据,但我正在努力使用正则表达式语法。感谢您的帮助。

【问题讨论】:

  • 一些示例数据和期望的结果会很好。
  • 您没有给出数据示例,但strsplit 用逗号可能是一种更直接的方法。

标签: regex r gsub


【解决方案1】:

下面的表达式:

sub('\\s*,.*','', X)

用空字符串替换从最后一个逗号到行尾的所有内容。因此,它将返回字符串中最后一个逗号之前的文本。

【讨论】:

  • 感谢两位的帮助
【解决方案2】:

你的正则表达式

sub('.*,\\s*','', X)

不是提取文本,而是用第二个参数替换第一个参数匹配的内容。因此,在X 中匹配一堆字符后跟逗号后跟空格字符的所有内容都将替换为 regex 中的任何内容。

您可以在上面链接的演示中看到您所击中的内容。我不确定您要达到什么目的,但是如果您想匹配文本中逗号之前的文本,this 正则表达式将匹配它,这也是您如何用之前的替换替换它sub

在R中

X2 = "here is another test string, with following text"
Y <- sub('.*(,.*)','', X2)

屈服

> Y
[1] ", with following text"

在 R 中,您的代码会生成:

X = "here is a test string, "
Y <- sub('.*,\\s*','\\1', X)

屈服

> Y
[1] ""

【讨论】:

    猜你喜欢
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    相关资源
    最近更新 更多