You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中如何从正则表达式生成所有可能的字符串组合?

问题

需要从正则表达式"(ost|west)europäisch($|e($|r|s|n|m))"(注:原正则中的*$应为笔误,实际应为$)生成如下格式的字符串向量:

[1] "osteuropäisch"    "westeuropäisch"   "osteuropäische"   "westeuropäische" 
[5] "osteuropäischer"  "westeuropäischer" "osteuropäisches"  "westeuropäisches"
[9] "osteuropäischen"  "westeuropäischen" "osteuropäischem"  "westeuropäischem"

目前可通过手动构造expand.grid实现单个正则的组合生成,但因存在大量不同正则表达式需处理,希望找到R语言中可将正则表达式直接转换为所有可能字符串组合的工具(类似Python的exrex模块),已排查base、stringi、stringr未找到相关功能。

解决方案

使用regenerator包

这是R中专门用于解析正则表达式并生成所有匹配字符串的工具,功能和Python的exrex高度相似。

  1. 安装并加载包:
install.packages("regenerator")
library(regenerator)
  1. 生成目标字符串组合:
# 修正后的正则表达式(修正原正则中无意义的*$为$)
target_regex <- "(ost|west)europäisch($|e($|r|s|n|m))"

# 生成所有可能的匹配字符串
result <- generate_all(target_regex)
# 输出结果
result

执行后会直接生成符合要求的字符串向量,该包支持分支(|)、分组()、可选匹配等常见正则语法,适合批量处理不同正则表达式。

自定义解析逻辑(无额外包依赖)

如果不想安装第三方包,可基于rex包解析正则结构,再结合expand.grid或purrr实现组合生成,但这种方式需要针对不同正则语法编写适配逻辑,灵活性不如regenerator,仅适合简单正则场景。

内容的提问来源于stack exchange,提问作者xyz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 17:17:22