【发布时间】:2018-04-13 14:04:35
【问题描述】:
语言:R,IDE:R Studio
我正在编写一个脚本来从 pdf 文件(又名大字符串)中提取和排除特定信息。我使用 grep 将字符串拆分为我想要的页面。我希望进一步瘦身。我更瘦的脚本是...
variablename <- grep("Additional Information:(?! )", AnyAdditionalInfoPages,
perl = TRUE, value = TRUE)
这完全符合我的要求。但是,我是 R 和正则表达式的新手,所以我想练习并尝试了以下...
variablename <- grep("Additional Information:(?!\s)", AnyAdditionalInfoPages,
perl = TRUE, value = TRUE)
结果是 - 错误:'\s' is an unrecognized escape in string started ""Additional Information:(?!\s"
与
variablename <- grep("Additional Information:(?!\\s)", AnyAdditionalInfoPages,
perl = TRUE, value = TRUE)
结果是一个空变量
> variablename
character(0)
发生了什么事?为什么 " " 有效,但字符串 \s 的转义字符无效?
【问题讨论】:
-
@MoeMichaelSmith 除了您输入的内容与您的正则表达式不匹配之外,几乎不可能说任何其他内容...
-
@Dason,我原来的那个... grep("Additional Information:(?! )",完全符合我的要求。我想知道为什么要用转义字符代替空格括号中的真实空格,不起作用。“”和\s之间有什么根本区别吗?我看到的所有文档都说空格“”应该包含在\s中。
-
我的评论试图指出您没有提供可重现的示例。尝试为我们制作一个最小的可重现示例。在这样做的过程中,我发现很多时候你可能会找出问题所在。如果您不这样做,那么至少我们将拥有带有实际数据的实际代码来说明问题。 stackoverflow.com/questions/5963269/…
-
@Dason,够公平的。我将包含一个示例,尽可能接近我正在使用的格式。在这种情况下,简单的数据使事情变得困难,而我更复杂的数据的格式则大不相同。
-
Wiktor Strib.我看了你的建议,你所谓的“完全重复”是不准确的。首先,这个问题涉及 Oracle 产品而不是正则表达式。虽然碰巧有相似之处,但这个问题的背景却大不相同。此外,答案与其他上下文中提供的答案并不遥远。请花时间阅读问题,而不是假设它是重复的。感谢 Marcus Campbell 花时间尊重我的问题,而不是立即驳回它。
标签: r regex regex-negation regex-lookarounds