使用 str_extract_all 在 R 中运行正则表达式 正则表达式尚未实现

2024-02-07

我正在尝试使用正则表达式来解析使用正则表达式的文件。在 R 中使用正则表达式的大多数解决方案都使用 stringr 包。我还没有找到另一种方法,或者另一个可以使用的包。如果您有其他方法来解决此问题,那也是可以接受的。

我想要完成的是获取几个由空格分隔的值,最后一个值是一些逗号分隔的可变长度值。目前,这应该以类似表格的格式进入矩阵或 df 中。

foo     foo_123bar      foo,bar,bazz
foo2    foo_456bar      foo2,bar2

我有我的正则表达式的工作示例here. https://regex101.com/r/yO4TpZ/2

我可能会遇到一些问题。第一个可能是我正在编写的正则表达式不受 R 的正则表达式引擎支持。虽然我有这样的感觉this http://www.rexegg.com/regex-disambiguation.html#define这将得到支持。我已经看到 R 使用类似 POSIX 的格式,这可以让事情变得有趣。第二个可能正是下面的错误消息所显示的内容。这还不是一个已被编码的功能。然而,这将是最麻烦的,因为如果没有这个包,我不知道另一种方法来解决我的问题。

下面是我用来复制此错误的 R 代码

library("stringr")

string = " foo  foo_123bar      foo,bar,bazz\n  foo2    foo_456bar      foo2,bar2,bazz2"

pattern = "
  (?(DEFINE)
    (?<blanks>[[:blank:]]+)
    (?<var>\"?[[:alnum:]_]+\"?)
    (?<csvar>(\"?[[:alnum:]_]+\"?,?)+)
  )
  ^
    (?&blanks)((?&var))
    (?&blanks)((?&var))
    (?&blanks)((?&csvar))"

# Both of these are throwing the error
str_extract_all(string, pattern)
str_extract_all(string, regex(pattern, multiline=TRUE, comments=TRUE))

> Error in stri_extract_all_regex(string, pattern, simplify = simplify,  : 
> Use of regexp feature that is not yet implemented. (U_REGEX_UNIMPLEMENTED)


# Using the example from ?str_extract_all runs without error
shopping_list <- c("apples x4", "bag of flour", "bag of sugar", "milk x2")
str_extract_all(shopping_list, "\\b[a-z]+\\b", simplify = TRUE)

我正在寻找一种解决方案,不一定是 stringr 解决方案,但这是我发现符合我的需求的唯一方法。其他更简单的 R 正则表达式函数仅接受模式,而不接受额外参数,包括我正在使用的多行和注释功能。


您有一个 PCRE 正则表达式,只能在使用 PCRE 正则表达式库(或 Boost,它基于 PCRE)解析正则表达式的方法/函数中使用。stringr str_extract使用 ICU 正则表达式库解析正则表达式。 ICU 正则表达式不支持递归并且DEFINE堵塞。您只是不能使用模式内方法来定义子模式然后重新使用它们。

相反,只需声明需要作为变量重用的正则表达式部分并动态构建模式:

library("stringr")
string = " foo  foo_123bar      foo,bar,bazz\n  foo2    foo_456bar      foo2,bar2,bazz2"
blanks <- "[[:blank:]]+"
vars <- "\"?[[:alnum:]_]+\"?"
csvar <- "(?:\"?[[:alnum:]_]+\"?,?)+"
pattern <- paste0("^",blanks,"(", vars, ")",blanks,"(", vars,")",blanks,"(",csvar, ")")
str_match_all(string, pattern)
# [[1]]
#     [,1]                                 [,2]  [,3]         [,4]          
#[1,] " foo  foo_123bar      foo,bar,bazz" "foo" "foo_123bar" "foo,bar,bazz"

注意:您需要使用str_match (or str_match_all) 将捕获组值提取为str_extract or str_extract_all只允许访问整个匹配值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 str_extract_all 在 R 中运行正则表达式 正则表达式尚未实现 的相关文章

  • 重复测量引导统计数据,按多个因素分组

    我有一个看起来像这样的数据框 但显然还有更多行等 df lt data frame id c 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 cond c A A B B A A B B A A B B A A B B co
  • R foreach问题(某些进程返回NULL)

    我遇到了问题foreach我正在 R 中使用的程序的一部分 该程序用于运行不同参数的模拟 然后将结果返回到单个列表 然后用于生成报告 当并非所有分配的模拟运行都在报告上实际可见时 就会出现问题 从各方面来看 似乎只有分配的运行的一个子集实际
  • 我无法下载 R 中的 reshape2 包 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试安装 R 包时收到此响应 gt installed packages reshape2 Package LibPath V
  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 使用 pracma::findpeaks 识别持续峰值

    我的语法有问题peakpat内的选项findpeaks内的函数pramcaR 包 v 2 1 1 我使用的是 R 3 4 3 x64 Windows 我希望该函数能够识别可能有两个重复值的峰值 并且我相信该选项peakpat这就是我能做到的
  • 如何使用 R 计算成为列表中中位数的概率?

    假设我有以下数据集 其中显示了假设实验的每个状态的三个观察结果的列表 state lt c Iowa Minnesota Illinois outcome lt list c 5 11 11 c 3 12 8 c 9 14 2 dat lt
  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • pyomo + 网状错误 6 句柄无效

    我正在尝试运行pyomo优化 我收到错误消息 Error 6 The handle is invalid 不知道如何解释它 环顾四周似乎与特权有关 但我不太明白 在下面找到完整的错误跟踪以及重现它的玩具示例 完整的错误跟踪 py run f
  • twitterR 和 ROAuth R 软件包安装

    我在安装 CRAN 上的 twitteR 和 RAOuth 软件包时遇到一些问题 我尝试了几种不同的方法 在 Windows 下使用源代码 在 Ubuntu 下使用 RStudio 我尝试了以下命令 sudo apt get install
  • R独特的列或行与NA无可比拟

    有谁知道如果incomparables的论证unique or duplicated 曾经被实施过incomparables FALSE 也许我不明白它应该如何工作 无论如何 我正在寻找一个巧妙的解决方案 以仅保留与另一列相同的唯一列 或行
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 检查条件并通过 Zend 中的 Regex 识别 url 中的模式

    我正在实现 Zend Regex 路由 并且必须对 url 执行多次检查 例如 如果这是我的网址 http localhost application public index php module controller action 这是
  • 基于时间窗口的不规则时间序列的优化滚动函数

    有没有办法使用 rollapply 来自zoo包或类似的东西 优化功能 rollmean rollmedian等 使用基于时间的窗口计算滚动函数 而不是基于大量观察的函数 我想要的很简单 对于不规则时间序列中的每个元素 我想计算一个具有 N
  • 如何使用 XPath 正则表达式匹配 URL

    需要 XPath 方面的帮助 我有这样一个XML
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这
  • 计算 R 中各列的唯一值

    我正在尝试创建一个新变量 其中包含来自两个不同列的字符串值的唯一计数 所以我有这样的东西 例如 A tibble 4 x 2 names partners
  • 为什么 R 更新后 sim_slopes() 中会出现此错误?

    我正在尝试使用 交互 包来创建简单斜率的约翰逊 尼曼图 但是 当尝试运行 sim slopes 函数时 出现以下错误 直到我将R更新到4 2 2 我才没有遇到这个问题 我使用的是 macOS Ventura 13 1 Error class

随机推荐

  • 如何通过EC2 SSH隧道从本地JAVA程序连接到RDS

    我正在尝试通过 SSH 隧道从本地 JAVA 程序连接到 RDS 数据库到 EC2 实例 以进行调试 我正在尝试在 EC2 实例中建立 SSH 隧道 然后将端口转发到 RDS 数据库 这是我的代码 final int localPort 9
  • Webgl 没有渲染我的圆圈

    我正在尝试学习如何使用 Webgl 并且已经学会了如何绘制三角形 正方形和直线 我在 webgl 中创建圈子时遇到问题 var InitDemo function var canvas document getElementById cir
  • 如何设置绑定项目的ContextMenu?

    我正在努力实现以下目标
  • C# RichTextBox选择问题

    我的应用程序上有一个 RichTextBox 控件 这是我的问题 当应用程序运行时 如果我开始用鼠标选择单词内的某些字符并继续在其外部选择 则选择会自动包含我开始选择的整个单词以及我想从中选择一部分的任何其他单词 ms word ish 如
  • IMPORTXML 到具有自动更新功能的 Google Apps 脚本中 [重复]

    这个问题在这里已经有答案了 我正在尝试让 Google 表格应用程序脚本适用于我正在使用的 IMPORTXML A1 importxml http www nfl com liveupdate scorestrip ss xml q A2
  • 获取矩阵元素的邻居

    我有一个矩阵 对于每个元素 我想获取其周围元素的索引 所有这些结果必须按以下方式存储到矩阵中 矩阵的每一行对应于一个矩阵元素 并且该矩阵的每一列包含 s 个邻居索引 例如 对于 4x4 矩阵 我们将得到一个 16x8 结果数组 某些矩阵元素
  • Ms Access vba 打开另一个数据库中表的数据表视图

    该语句将打开当前数据库中指定表的数据表视图 DoCmd OpenTable sTablename acViewNormal 有没有办法让另一个数据库中的表达到相同的结果 我有一个表单 可以在其中选择 Access 数据库 然后下拉菜单中会填
  • Mongodb 是否可以聚合对象?

    我正在尝试汇总本文档中的数据包总数 id ObjectId 51a6cd102769c63e65061bda capture 1369885967 packets 0 595 1 596 2 595 3 595 我能得到的最接近的是 db
  • Jythonc 失踪

    我刚刚安装了 Jython 2 5 1 我想将我的 Python 文件转换为 Java 类文件 网站上指示使用 jythonc 命令行工具 但我找不到它 有谁知道我在哪里可以找到它 基本上我想要完成的是让我的 Python 代码在浏览器中运
  • ValueError:无法处理多标签指示器和二进制的混合

    我将 Keras 与 scikit learn 包装器一起使用 特别是 我想使用 GridSearchCV 进行超参数优化 这是一个多类问题 即目标变量只能在一组 n 个类上选择一个标签 例如 目标变量可以是 Class1 Class2 C
  • PyMC - 方差-协方差矩阵估计

    我读了下面的论文 http www3 stat sinica edu tw statistica oldpdf A10n416 pdf http www3 stat sinica edu tw statistica oldpdf A10n4
  • PHPUnit 总是输出“没有执行测试!”在 MacOS 大苏尔

    当尝试跑步时anyPHPUnit 测试 我总是得到No tests executed 我的 MacOS 机器上的消息 在这台特定机器上进行重现的一个简单方法是安装一个新的 Laravel 实例并运行默认测试 composer create
  • jQuery;对于 new Image(),Chrome 图像宽度和高度 = 0

    在 DOM 加载后 我无法让 Chrome 识别图像宽度或高度 图像通过 phpThumb 脚本动态加载 调整图像大小 如果我去掉动态 url 并将其替换为图像的直接 url 我不会遇到任何问题 并且 Chrome 中一切正常 但使用动态
  • SQL 中关键字“GROUP”附近的语法不正确

    我在对语句进行分组时遇到错误 这是我的代码 DECLARE avg volume INT SELECT avg volume ISNULL AVG Total Volume 0 FROM SELECT station id DATEPART
  • 使用 ALTER 删除 MySQL 中存在的列

    如果 MySQL 表中存在某列 如何使用 ALTER 删除该列 我知道我可以使用ALTER TABLE my table DROP COLUMN my column 但是如果my column不存在 是否有替代语法来有条件地删除列 我使用的
  • Android 数据绑定:多次调用自定义绑定适配器时生成的代码中缺少返回语句

    我正在使用 android 数据绑定库和 MVVM 架构 在 xml 布局中 我定义了一个名为 viewModel 类型为 myViewModel 的变量 该布局有几个 TextInputEditText 我使用了以下自定义绑定适配器 ma
  • 检查 C++ 中 int 溢出

    我正在运行一个 C 程序 它在 for 循环中添加数字 int y 0 for int i 0 i
  • Mac Python“安装步骤失败:运行 postflight 脚本”

    我是 Python 开发新手 在尝试安装 Aptana Studio 时 我似乎搞乱了我的 Python 安装 所以我按照这里的卸载 MacPython 说明进行操作http homepages cwi nl jack macpython
  • 对于已知情况是否应该避免尝试捕获

    我有一个我知道会发生但非常罕见的案例 例如 代码每运行一万次 这种情况可能会发生一次 我可以通过一个简单的方法来检查这种情况if但是这个if会运行很多次没有用 另一方面 我可以将代码放在 try catch 块中 当发生特殊情况时 我会执行
  • 使用 str_extract_all 在 R 中运行正则表达式 正则表达式尚未实现

    我正在尝试使用正则表达式来解析使用正则表达式的文件 在 R 中使用正则表达式的大多数解决方案都使用 stringr 包 我还没有找到另一种方法 或者另一个可以使用的包 如果您有其他方法来解决此问题 那也是可以接受的 我想要完成的是获取几个由