R 中的正则表达式用于提取特殊字符之前的单词



>我有一个带有标记字符串的词性数据帧 例:

best_JJS phone_NN only_RB issue_NN camera_NN sensor_NN have_VB mind_NN own_JJ 

我想删除/和"_"之后的标签,以便我有输出

best phone only issue camera sensor have mind own

我正在使用 R,但我找不到适合 gsub 函数的正则表达式。 我试过这个。

sentence= c("best_JJS phone_NN only_RB issue_NN camera_NN sensor_NN have_VB mind_NN own_JJ")
o1=gsub("\_.*","",sentence, perl = T)

但这会删除第一个下划线之后的整个字符串。提前致谢

您可以将_[A-Z]+TRE 模式与gsub一起使用:

sentence <- c("best_JJS phone_NN only_RB issue_NN camera_NN sensor_NN have_VB mind_NN own_JJ")
gsub("_[A-Z]+","",sentence)
[1] "best phone only issue camera sensor have mind own"

查看 R 演示

_[A-Z]+模式匹配下划线(_,注意它不必在正则表达式模式中转义)和一个或多个(+)大写ASCII字母([A-Z])。

您可以进一步精确模式,例如,仅匹配前面带有单词字符的_,并且仅在后面跟有单词边界时才匹配大写字母:

"\B_[A-Z]+\b

如果您想为 POS 值创建一个非常具体的正则表达式,您可以使用交替:

"\B_(JJ|NN|CC|[VR]B)\b"

并继续向正则表达式模式添加|<code>

最新更新