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

如何用R正则表达式捕获希伯来语单词עונה及后续数字?

解决R中希伯来语正则匹配空结果的问题

我之前也碰到过类似的坑,其实问题出在正则引擎的差异上——你在Regex101用的应该是PCRE引擎,但R的stringr包默认用的是ICU引擎,两者对结合RTL(从右到左)语言的正则处理有细微区别,才导致匹配返回空结果。

这里有两个简单的解决方案:

方案一:切换到PCRE引擎匹配

直接在str_extract_all里指定engine = "perl",和你在Regex101的测试环境对齐,就能正常匹配:

library(stringr)
str <- "כל הילדים אוכלים, עונה 2 , פרק 8-לזניית ירקות וסלמון בדבש"
exp <- "עונה(\\s+\\d+|\\d+)"
str_extract_all(str, exp, engine = "perl")

运行后会返回:[[1]] [1] "עונה 2",完全符合你的预期。

方案二:调整正则适配ICU引擎

如果不想切换引擎,也可以用更兼容ICU的写法,比如用\\s*匹配任意空白字符,\\p{Digit}匹配十进制数字(覆盖更全面的数字类型):

library(stringr)
str <- "כל הילדים אוכלים, עונה 2 , פרק 8-לזניית ירקות וסלמון בדבש"
exp <- "עונה\\s*\\p{Digit}+"
str_extract_all(str, exp)

这个写法同样能精准捕获到עונה 2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:08:22