使用 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 中运行正则表达式 正则表达式尚未实现 的相关文章

随机推荐

  • 如何通过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 包 我还没有找到另一种方法 或者另一个可以使用的包 如果您有其他方法来解决此问题 那也是可以接受的 我想要完成的是获取几个由