>我有一个带有标记字符串的词性数据帧 例:
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>
。