【问题标题】:Regex in R to extract words before a special characterR中的正则表达式提取特殊字符之前的单词
【发布时间】:2017-02-07 11:54:11
【问题描述】:

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

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)

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

【问题讨论】:

    标签: r regex


    【解决方案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 字母 ([A-Z])。

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

    "\\B_[A-Z]+\\b
    

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

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

    然后继续将|&lt;code&gt; 添加到正则表达式模式中。

    【讨论】:

    • 非常感谢!!这很有帮助。
    • @Wiktor Stribiżew:对不起。我还在研究如何有效地使用这个论坛。再次感谢。
    猜你喜欢
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    相关资源
    最近更新 更多