【发布时间】:2019-06-28 18:36:17
【问题描述】:
我有一个列表,其中每个元素都包含一个文本数据向量。 本质上,我希望代码删除正则表达式之后的文本:第二个“。”在各自的向量中。
如果与正则表达式一起使用,我相信 gsub 函数是解决此问题的好方法。我已经尝试使用正则表达式来制定要检测的模式(见下文)。
数据:
v<-c("M. le président. La parole est à M. Emile Vernaudon.",
"M.Gabriel Xaaperei. Monsieur le ministre",
"M. Raymond Fornir, rapporteur. La commission")
代码:
Subbed<-gsub("[^((?<=^M. *))]", "X", v)
代码返回如下:
[1] "M. XX XXXXXXXXX. XX XXXXXX XXX. M. XXXXX XXXXXXXXX."
[2] "M. XXXXXXX XXXXXXXXX. MXXXXXXX XX XXXXXXXXX XXX"
[3] "M. XXXXXXX XXXXXX XXXXXXXXXX. XX XXXXXXXXXX"
代码不仅考虑了所有的“M.”,而且在第二行还有一个“M”,尽管它后面没有“.”。 我的预感是,在 gsub 中,正则表达式的工作方式似乎有所不同——“M”。在我的代码中,R 可能会将其读取为“M|”。此外,Lookaround 之后的 ^ 似乎不能用作锚点,而只是用作附加标点符号。
期望的结果如下:
[1] "M. le président."
[2] "M. Gabriel Xaaperei."
[3] "M. Raymond Fornir, rapporteur."
非常感谢任何帮助。
【问题讨论】:
-
正则表达式仅适用于字符串,不适用于向量等其他数据类型。
标签: r regex replace gsub regex-lookarounds