除“in”、“the”、“of”之外,字符串中每个单词的首字母大写

2023-12-25

除了某些单词之外,如何将每个单词的第一个字母大写

x <- c('I like the pizza', 'The water in the pool')

我期望输出是

c('I Like the Pizza', 'The Water in the Pool')

目前我正在使用

gsub('(^|[[:space:]])([[:alpha:]])', '\\1\\U\\2', x, perl=T) 

每个单词的第一个字母大写。


您可以使用 PCRE RegEx 应用黑名单方法:

(?<!^)\b(?:the|an?|[io]n|at|with|from)\b(*SKIP)(*FAIL)|\b(\pL)

这是一个该正则表达式匹配内容的演示 https://regex101.com/r/fQ3sY9/2.

In R:

x <- c('I like the pizza', 'The water in the pool', 'the water in the pool')
gsub("(?<!^)\\b(?:the|an?|[io]n|at|with(?:out)?|from|for|and|but|n?or|yet|[st]o|around|by|after|along|from|of)\\b(*SKIP)(*FAIL)|\\b(\\pL)", "\\U\\1", x, perl=T)
## => [1] "I Like the Pizza"      "The Water in the Pool" "The Water in the Pool"

See IDEONE演示 https://ideone.com/jmajK8

这是一篇文章标题中不应大写的单词 http://www.superheronation.com/2011/08/16/words-that-should-not-be-capitalized-in-titles/关于第一个替代组中应包含哪些单词的一些提示。

正则表达式解释:

  • (?<!^)- 如果不在字符串开头,则仅匹配以下替代项(我在注释中添加了此限制,有一个要求第一个字母应始终大写。)
  • \b- 前导词边界
  • (?:the|an?|[io]n|at|with(?:out)?|from|for|and|but|n?or|yet|[st]o|around|by|after|along|from|of)- 白名单虚词(可以而且应该延长!)
  • \b- 尾随字边界
  • (*SKIP)(*FAIL) - 比赛失败一旦功能词匹配
  • | - or...
  • \b(\pL)- 捕获与单词中的起始字母匹配的组 1。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

除“in”、“the”、“of”之外,字符串中每个单词的首字母大写 的相关文章

  • 在 R 中,如何获得某些向量值的所有可能组合?

    背景 我有一个需要一些参数的函数 我想要获得所有可能的参数组合的函数结果 一个简化的例子 f lt function x y return paste x y sep colors c red green blue days c Monda
  • 版本差异? Java 中的正则表达式转义

    看来正则表达式转义在不同版本的 Java 中的工作方式不同 在 Java openjdk 16 0 1 中编译工作正常 在 Java openjdk 11 0 11 中抛出此编译错误 test java 15 error illegal e
  • 将 SAS sas7bdat 数据读入 R

    R 有哪些选项可以读取本机 SAS 格式的文件 sas7bdat 进入R The NCES 共同核心 https nces ed gov ccd pubschuniv asp例如 包含以此格式保存的大量数据文件存储库 为了具体起见 让我们集
  • 最新的 Windows 10 更新后 R 将无法运行

    我已经更新了我的 Windows 但 R 无法运行 因此 R studio 也无法运行 当我运行 R GUI 时 它只是冻结并且没有响应 我已允许防火墙豁免铬 我正在使用 Windows Insider 计划并且刚刚更新到 Windows
  • 写入抓取数据的 csv 文件时如何拆分项目名称

    我有兴趣使用 R 从网上抓取的数据创建 csv 或类似的 Excel 兼容文件 到目前为止 我通过执行以下操作来存储数据 require textreadr spiegel lt read html http www spiegel de
  • 计算网格中物种的出现次数

    我有大约500 000点R美国各地候鸟物种的出现数据 我试图在这些点上覆盖网格 然后计算每个网格中出现的次数 统计完计数后 我想将它们引用到网格单元 ID 在 R 中 我使用了over 函数只获取范围图中的点 这是一个形状文件 Read i
  • 如果 RCurl::getURL() 执行时间太长,如何停止执行?

    有没有办法告诉 R 或 RCurl 包在超过指定时间段时放弃尝试下载网页并转到下一行代码 例如 gt library RCurl gt u http photos prnewswire com prnh 20110713 NY34814 b
  • 数据框中按行相关

    我正在尝试计算大型数据帧的所有行之间的相关性 到目前为止已经提出了一个有效的简单 for 循环 例如 name lt c a b c d col1 lt c 43 78 43 84 37 92 31 72 col2 lt c 43 80 4
  • GitHub 操作 setup-r-dependency 失败,说明没有名为“digest”的包

    我一直在尝试设置一些 GitHub 操作来自动检查我的 R 包并运行测试覆盖率 我目前正在使用 setup r dependency v2 操作来安装依赖项 但无法安装包 digest 返回以下错误 Error Error
  • PHP 删除字符最后一个实例之前的所有内容

    有没有办法删除某个字符之前的所有内容 包括最后一个实例 我有多个字符串 其中包含 gt e g the gt cat gt sat gt on gt the gt mat welcome gt home 我需要对字符串进行格式化 以便它们变
  • 将多个函数应用于一个向量

    我正在寻找一种将多个函数应用于一个向量的选项 我认为这对于逆应用函数来说是一种仁慈 其中一个函数应用于许多向量 或列 有没有办法指定两个或多个函数 例如 min 和 max 并将其应用于向量 与 CathG的评论类似 但没有get v lt
  • 正则表达式在 R 中同时多次包含字母/特殊字符时删除单词

    我想删除那些单词中字母 特殊字符的数量同时出现两次以上的单词 例如 输入就像 Google in theee lland of whhhat c c and e 输出应该是 Google in lland of c c and x lt G
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • 为什么在 R 中绘图时,hovertemplate 无法正确显示某些数据点

    mydat2 lt data frame subject c math english chemistry score c 80 50 65 class c A B A count c 50 60 70 library plotly plo
  • 使用 xtable 对乳胶输出的表进行排序

    我正在尝试生成一个排序表并导出到乳胶中 然而 xtable 似乎无法处理排序表 建议 a lt sample letters 500 replace T b lt table a c lt sort table a decreasing T
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • ggplot2 中的颜色和填充参数有什么区别?

    ggmap location geom density 2d aes long lat df geom point aes long lat color special alpha 0 5 data df 当我更改填充颜色时 我看不出有什么
  • 如何使用 Rcpp 将 C 结构从 C 库公开到 R

    我正在尝试将 C 结构从 C 库公开到 R 中 例如 struct A int flag 库提供 API 来构造和销毁是很常见的A A initA void freeA A a 感谢RCPP MODULE 很容易暴露它而不考虑析构函数 in
  • 省略 RColorBrewer 调色板上较亮的颜色以在 ggplot2 中使用

    我想在 RColorBrewer 的 Oranges 调色板中使用较深的颜色 以便在我的 ggplot 条形图 中使用 然而我却做不到 帮助 下面是示例代码 my palette brewer pal n 9 Oranges 4 9 Bar
  • 二部图匹配以匹配两个集合

    我是新手igraphR 中的包 我有两套A and B 每个都有N顶点 A1 A2 AN and B1 B2 BN 每个元素之间都有一个边缘A对每一个元素B 我有一个函数fWgt Ai Bj 返回之间的边的权重Ai and Bj 我一直在尝

随机推荐