【问题标题】:Regex to Remove Everything but Numbers, Letters and Spaces in R正则表达式删除 R 中除数字、字母和空格外的所有内容
【发布时间】:2017-03-16 04:30:18
【问题描述】:

如何在 R 中删除这些讨厌的反斜杠?我已经搜索了网络和 stackoverflow,试图找到一种方法来摆脱反斜杠......没有运气。

我尝试了很多不同的方法,但我认为我唯一可以使用的方法是使用正则表达式和 gsub() 删除不是数字、字母或空格的每个字符。这是我的字符串:

"_kMDItemOwnerUserID = 99kMDItemAlternateNames = ( \"(500) Days of Summer     (2009).m4v\")kMDItemAudioBitRate = 163kMDItemAudioChannelCount =     2kMDItemAudioEncodingApplication = \"HandBrake 0.9.4 2009112300\"kMDItemCodecs =     ( \"H.264\", AAC, \"QuickTime Text\")"

如您所见,它非常混乱,到处都是反斜杠和引号。最终,我要做的是提取电影名称:'(500) Days of Summer (2009)'。

什么是匹配除数字、字母和空格之外的所有内容的正则表达式?

非常感谢您的帮助。

【问题讨论】:

  • 你从哪里得到这个字符串?这似乎是XY Problem。如果输入字符串是标准格式,请使用适当的解析器而不是使格式无效。
  • 感谢您的反馈。我本可以提供更多背景信息,但我只需要这个具体的答案。如果我能得到这个答案,我的更大的项目就会奏效。为了回答您的问题,该字符串来自 shell 命令 mdls,该命令提取与文件关联的所有元数据。

标签: r regex


【解决方案1】:
gsub("[^[:alnum:] ]", "", x)

尝试替换字符类[^[:alnum:] ],它将匹配任何字母、数字或空格的字符:

完整代码:

x <- "_kMDItemOwnerUserID = 99kMDItemAlternateNames = ( \"(500) Days of Summer     (2009).m4v\")kMDItemAudioBitRate = 163kMDItemAudioChannelCount =     2kMDItemAudioEncodingApplication = \"HandBrake 0.9.4 2009112300\"kMDItemCodecs =     ( \"H.264\", AAC, \"QuickTime Text\")"

gsub("[^[:alnum:] ]", "", x)
[1] "kMDItemOwnerUserID  99kMDItemAlternateNames   500 Days of Summer     2009m4vkMDItemAudioBitRate  163kMDItemAudioChannelCount      2kMDItemAudioEncodingApplication  HandBrake 094 2009112300kMDItemCodecs       H264 AAC QuickTime Text"

【讨论】:

  • 太棒了——正是我想要的!谢谢。
猜你喜欢
  • 2021-07-11
  • 2011-09-08
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
相关资源
最近更新 更多