我有一个词性标记字符串的数据框 示例:
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)
但是这会删除第一个下划线后的整个字符串。在此先感谢
答案 0 :(得分:1)
您可以将_[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 demo
_[A-Z]+
模式匹配下划线(_
,注意它不必以正则表达式模式转义)和一个或多个(+
)大写ASCII字母({{ 1}})。
你可以进一步确定模式,比如只匹配[A-Z]
,如果它前面有一个单词char,只有当跟着一个单词边界时才匹配大写字母:
_
如果您想为POS值创建一个非常具体的正则表达式,您可以使用替换:
"\\B_[A-Z]+\\b
继续将"\\B_(JJ|NN|CC|[VR]B)\\b"
添加到正则表达式模式中。