gpt4 book ai didi

regex - R正则表达式删除字母之间的撇号

转载 作者:行者123 更新时间:2023-12-03 23:15:00 24 4
gpt4 key购买 nike

我能够在保留撇号的同时删除字符串中的所有标点符号,但我现在陷入了如何删除不在两个字母之间的任何撇号的问题。

str1 <- "I don't know 'how' to remove these ' things"

应该是这样的:
"I don't know how to remove these things"

最佳答案

您可以使用正则表达式方法:

str1 <- "I don't know 'how' to remove these ' things"
gsub("\\s*'\\B|\\B'\\s*", "", str1)

this IDEONE demo和一个 regex demo .

正则表达式匹配:
  • \\s*'\\B - 0+ 个空格,'和一个非单词边界
  • | - 或
  • \\B'\\s* - 非单词边界,'和 0+ 个空格

  • 如果您不需要关心删除独立后可能留下的额外空白 ' ,您可以使用 PCRE 正则表达式,例如
    \b'\b(*SKIP)(*F)|'

    the regex demo

    说明 :
  • \b'\b - 匹配一个 '中间单词字符
  • (*SKIP)(*F) - 并省略匹配
  • | - 或匹配...
  • ' - 另一个上下文中的撇号。

  • IDEONE demo :
    gsub("\\b'\\b(*SKIP)(*F)|'", "", str1, perl=TRUE)

    考虑 Unicode 字母之间的撇号 , 添加 (*UTF)(*UCP)在模式的开头标记标志并使用 perl=TRUE争论:
    gsub("(*UTF)(*UCP)\\s*'\\B|\\B'\\s*", "", str1, perl=TRUE)
    ^^^^^^^^^^^^ ^^^^^^^^^

    或者
    gsub("(*UTF)(*UCP)\\b'\\b(*SKIP)(*F)|'", "", str1, perl=TRUE) 
    ^^^^^^^^^^^^

    another IDEONE demo

    关于regex - R正则表达式删除字母之间的撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37778615/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com