R 中的 gsub 和 regex 问题

2024-03-05

我在 R 中使用 gsub 将文本添加到字符串的中间。它工作得很好,但由于某种原因,当位置太长时,它会抛出错误。代码如下:

gsub(paste0('^(.{', as.integer(loc[1])-1, '})(.+)$'), new_cols, sql)
Error in gsub(paste0("^(.{273})(.+)$"), new_cols, sql) :  invalid
  regular expression '^(.{273})(.+)$', reason 'Invalid contents of {}'

当括号中的数字(本例中为 273)较小时,此代码可以正常工作,但当它很大时,则不行。


这会产生错误:

sql <- "The cat with the bat went to town. He ate the fat mat and wouldn't stop til the sun came up. He was a fat cat that lived with a rat who owned many hats.The cat with the bat went to town. He ate the fat mat and wouldn't stop til the sun came up. He was a fat cat that lived with a rat who owned many hats."  
new_cols <- "happy" 
gsub('^(.{125})(.+)$', new_cols, sql)  #**Works
gsub('^(.{273})(.+)$', new_cols, sql) 
Error in gsub("^(.{273})(.+)$", new_cols, sql) :    invalid regular
  expression '^(.{273})(.+)$', reason 'Invalid contents of {}'

背景

R gsub默认使用 TRE 正则表达式库。限制量词的边界从 0 到RE_DUP_MAX这是在 TRE 代码中定义的。看此 TRE 参考 http://laurikari.net/tre/documentation/regex-syntax/:

A bound是以下之一,其中n and m are 之间的无符号十进制整数0 and RE_DUP_MAX

看来RE_DUP_MAX设置为 255(参见此TRE源文件 https://github.com/laurikari/tre/blob/556ef09df29aadc041923522d07cc012d92a4749/include/tre/tre.h#L128显示#define RE_DUP_MAX 255),因此,您不能在{n,m}限制量词。

Solution

使用 PCRE 正则表达式风格,添加perl = TRUE它会起作用的。

R demo https://ideone.com/elpMNU:

> sql <- "The cat with the bat went to town. He ate the fat mat and wouldn't stop til the sun came up. He was a fat cat that lived with a rat who owned many hats.The cat with the bat went to town. He ate the fat mat and wouldn't stop til the sun came up. He was a fat cat that lived with a rat who owned many hats."
> new_cols <- "happy"
> gsub('^(.{273})(.+)$', new_cols, sql, perl=TRUE)
[1] "happy"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 中的 gsub 和 regex 问题 的相关文章

  • 如何用正则表达式替换多个匹配/组?

    通常我们会编写以下内容来替换一场比赛 namesRegex re compile r is life re I replaced namesRegex sub r butter There is no life in the void pr
  • R中IF函数的使用

    我正在短跑ifR 中的函数 但收到以下警告消息 In if runif 50 0 1 lt 0 69 the condition has length gt 1 and only the first element will be used
  • 根据特定字符获取整个字符串或子字符串

    我有一个包含 MIME 类型的字符串 例如application json 现在我想将其与实际的 HTTP 标头进行比较 在本例中content type 如果标头包含 MIME 类型 那么就很简单 if mimeType contentT
  • 如何为自定义 S3 类实现提取/取子集 ([ [<-, [[ [[<-)] 函数?

    我有一个自定义的 S3 类foo 它在正常的基础上添加了一些自定义行为data frame foo object lt data frame class foo object lt c foo data frame 对于这个类 还应该有一个
  • 如何为 Imagus 悬停缩放扩展开发自定义过滤器?

    当我读到关于悬停缩放是邪恶的 http www reddit com r YouShouldKnow comments 1wjrc8 ysk that the hover zoom extension is spyware 哎呀 有两篇文章
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • R 中 SVG 图形的最佳设备? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想从 R 导出 SVG 图形 似乎有两种选择 RSvgDevice 和 Cairo 有人可以对这些包发表评论吗 是默认的还是明显比另一个
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • rvest 函数 html_nodes 返回 {xml_nodeset (0)}

    我正在尝试抓取以下网站的数据框 http stats nba com game 0041700404 playbyplay http stats nba com game 0041700404 playbyplay 我想创建一个表格 其中包
  • 在 R 上安装 TDA 包时出错:目标“diag.o”的配方失败

    使用 Ubuntu 16 04 和 R 3 4 1 安装 R 包 TDA 时收到错误消息 它似乎与制作 CGAL diag cpp 和 或 diag o 最后的完整错误打印输出 有关 我仔细看了这个 在 R 上安装 TDA 包时出错 htt
  • Perl:正则表达式不抓取代码中的多行 C 风格注释

    我有一个 Perl 程序 读取用 C 编写的 SRC 文件 使用 SRC 文件中的正则表达式匹配来查找特定格式的数据以用作目标文件名 打开新的目标文件 执行另一个正则表达式匹配以查找包含关键字 abcd 的所有 C 风格注释 注意 这些注释
  • [A-z0-9]+ 正则表达式匹配方括号[重复]

    这个问题在这里已经有答案了 我正在努力解决以下正则表达式 A z0 9 如果针对此字符串进行测试 a919238 a asd 它返回a919238 包括方括号 我尝试输入我在 regex101 上的测试用例 https www regex1
  • 在 RGL 中将立方体绘制到 3D 散点图中

    我正在尝试向 3D 散点图添加较小的立方体 网格 具有指定边长 我希望立方体位于原点 我该怎么做呢 我已经玩过cube3d 但我似乎无法将立方体正确定位 也无法使其成为网格 因此我可以看到它包含的数据点 这是我所拥有的 library rg
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • ggplot2:带有 geom_line 的 x 轴因子不起作用

    我想要一个线图 其中value绘制为函数expt每级一行var 这是我的数据 lines lt expt var value 1 none p 0 183065327746799 2 none p 0 254234138384241 3 n
  • 将 Excel 文件读入 R 并锁定单元格

    我有一个 Excel 电子表格要读入 R 它受密码保护并锁定了单元格 我可以使用 excel link 导入受密码保护的文件 但我不知道如何解锁 取消保护单元格 excel link 给了我这个错误 gt
  • 斯皮尔曼相关性和联系

    我正在一小组配对排名上计算斯皮尔曼的 rho 斯皮尔曼因处理领带不当而闻名 例如 取2组8个排名 即使两组中有6个是平局 相关性仍然很高 gt cor test c 1 2 3 4 5 6 7 8 c 0 0 0 0 0 0 7 8 met
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式

随机推荐

  • 在 HTML 5 画布上创建 Reuleaux 多边形的函数

    我正在开展一个使用 HTML 5 画布设计系统艺术作品的项目 为了给我的作品带来更有机和多样化的感觉 我想要一个创建 reuleaux 多边形的函数 我认为可能有一种方法可以改变我的draw sharp polygon center pos
  • UITableViewCell 中的 UILabel 大小不正确(分配文本后的动画)

    文本在一个UILabel显示后闪烁 首先以省略号出现在单行上 然后占据其适合的 2 行 请注意 单元格高度没有改变 问题是这样的 标签 朋友们 快来参与并填满盒子吧 首先出现被截断的并在视图转换期间错位为 这种情况仅发生在装有 iOS 8
  • 为什么我应该更喜欢使用成员初始值设定项列表?

    我偏向于在构造函数中使用成员初始值设定项列表 但我早已忘记了其背后的原因 您是否在构造函数中使用成员初始值设定项列表 如果是这样 为什么 如果没有 为什么不呢 For POD https stackoverflow com a 146454
  • SpyOn TypeORM 存储库可更改单元测试 NestJS 的返回值

    我想对我的 TypeORM 数据库调用进行单元测试 我已经用有效数据模拟了我所有的 TypeORM 存储库 但我想监视存储库并更改 TypeORM 的返回值形式 我怎么做 import INestApplication from nestj
  • PowerShell - 如何在运行空间中导入模块

    我正在尝试用 C 创建一个 cmdlet 代码看起来像这样 Cmdlet VerbsCommon Get HeapSummary public class Get HeapSummary Cmdlet protected override
  • 更改 WooCommerce 电子邮件通知中的订单项目元数据

    我需要更改 自定义 WooCommerce 电子邮件通知的特定订单项元数据 但我找不到解决方案 I found one https stackoverflow com a 52684694 1354580 但它用于从 Woocommerce
  • 如何高效更新文件修改频繁的Impala表

    我们有一个基于 Hadoop 的解决方案 CDH 5 15 我们可以在 HDFS 的某些目录中获取新文件 在这些目录的顶部 我们有 4 5 个 Impala 2 1 表 在 HDFS 中写入这些文件的过程是 Spark Structured
  • android 套接字 DataOutputStream.writeUTF

    我写套接字客户端 clientSocket new Socket 192 168 1 102 15780 outToServer new DataOutputStream clientSocket getOutputStream 所有作品
  • NPM:如何获取 ./node_modules/.bin 文件夹?

    我在安装 npm 时遇到问题 我创建了一个项目 比如项目 A cd projectA npm install sails 但安装后找不到 sails 命令 我知道它已成功安装在 projectA node modules目录 但无法获取可执
  • heroku:无法检测到此应用程序的默认语言

    第一次使用 Heroku 试图推动 我已经运行命令 heroku create buildpack heroku python 它显示 heroku create buildpack heroku python Creating app d
  • “强”迭代器指针/引用

    是否存在 强 迭代器之类的东西 我的意思是迭代器坚持它所引用的值而不是它所在的地址 这样如果该值被交换到不同的地址 迭代器将继续在这个新地址中指向它 不管它在数据结构中移动到哪里 是的 也不是 但为什么 你想要什么std iter swap
  • 如何更改或查找 JTable 中的列类型

    我想插入JCheckBox在每一行中JTable所以我尝试更改我的第一个列类型 当我尝试此代码时 出现 java lang String 无法转换为 java lang Boolean 错误 DefaultTableModel model
  • Caffe/pyCaffe:设置所有 GPU

    是否可以为Caffe 尤其是pyCaffe 设置所有GPU 就像是 caffe train solver examples mnist lenet solver prototxt gpu all 这两个分支现在都支持多 GPU 一段时间了
  • WordPress 随机数存储在哪里?

    我试图找出 WordPress 存储所有随机数的位置 但却没能找到线索 我首先检查了数据库 但找不到任何名为 wp nonces 的表 我 11 个月前发布了这个问题 我收到的所有答案都很好 对我帮助很大 但他们都没有解决 WordPres
  • 字段列表中的未知列错误 Rmysql

    我使用编写了一个 data frame dbWriteTable con name db all df overwrite T row names F 使用MySQL成功连接到MySQL 现在我有第二个数据框 它具有类似的结构并尝试使用 d
  • 如何查看给定 npm 模块的依赖关系树?

    如何获取可用于 npm 但未安装在本地的模块树 npm ll执行本地安装的软件包的工作 但它不适用于未安装的模块或全局安装的模块 I tried npm list bower但事实并非如此 无需安装即可生成NPM依赖树 使用命令建立依赖关系
  • 两个 github 帐户推送到同一个存储库 [重复]

    这个问题在这里已经有答案了 所以这是一个非常具体的用例 如果任何 GitHub 专家可以帮助我 那就太好了 在我的 Linux 笔记本电脑中 我想推送same使用两个不同的 GitHub 用户名的 GitHub 存储库 我已在本地计算机中设
  • 将负数转换为无符号类型(ushort、uint 或 ulong)

    如何将一些负数转换为unsigned types Type type typeof ushort short num 100 ushort num1 unchecked ushort num When type is known Resul
  • 存储过程和实体框架的性能

    是否有任何明显的原因可以解释为什么通过实体模型调用存储过程会导致性能比直接调用慢得多 首先 我不希望 SP 运行在exactly相同的速度 我知道 EF 必须做的许多事情在直接访问 SP 时不会被调用 除此之外 我有一个返回三列字符串的查询
  • R 中的 gsub 和 regex 问题

    我在 R 中使用 gsub 将文本添加到字符串的中间 它工作得很好 但由于某种原因 当位置太长时 它会抛出错误 代码如下 gsub paste0 as integer loc 1 1 new cols sql Error in gsub p