首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:无法解析正则表达式"":模式太大-编译失败

问错误:无法解析正则表达式"":模式太大-编译失败
EN

Stack Overflow用户
提问于 2014-03-27 23:01:08
回答 1查看 804关注 0票数 1

我发现以下现象:

我有一个使用REGEXP_EXTRACT函数提取了100个字段的BQ查询。

我添加了一个新的表达式,并得到以下错误:无法解析正则表达式"":模式太大-编译失败。

当单独查询这个表达式时,一切都运行得很好,在一个更大的查询中,我得到了错误。

这是基于github示例数据和一个简单正则表达式的问题副本:

代码语言:javascript
复制
    SELECT repository.description,
    REGEXP_EXTRACT(repository.description,r'(?:\w){0}(\w)') as Pos1,
    REGEXP_EXTRACT(repository.description,r'(?:\w){1}(\w)') as Pos2,
    REGEXP_EXTRACT(repository.description,r'(?:\w){2}(\w)') as Pos3,
.
. here it goes on and on in the same pattern
.
    REGEXP_EXTRACT(repository.description,r'(?:\w){198}(\w)') as Pos199,
    REGEXP_EXTRACT(repository.description,r'(?:\w){199}(\w)') as Pos200,
    REGEXP_EXTRACT(repository.description,r'(?:\w){200}(\w)') as Pos201,
    FROM [publicdata:samples.github_nested] LIMIT 1000

它返回:

代码语言:javascript
复制
Failed to parse regular expression "(?:\w){162}(\w)": pattern too large - compile failed

但在运行时:

代码语言:javascript
复制
SELECT repository.description,
REGEXP_EXTRACT(repository.description,r'(?:\w){162}(\w)') as Pos163,
FROM [publicdata:samples.github_nested] LIMIT 1000

一切运行正常...

可以在单个查询中使用的REGEXP_EXTRACTs的数量或它们的组合复杂性是否有限制?

EN

回答 1

Stack Overflow用户

发布于 2014-03-28 00:29:55

我会调查这个问题的。作为一种变通办法,看起来您想要做的是按字符位置将字段拆分成单独的字段……所以把"abc“改成{pos1:"a",pos2:"b",pos3:"c"}。对吗?如果是这样,您可能希望尝试使用LEFT()和RIGHT()函数。如图所示

代码语言:javascript
复制
LEFT(1, reponsitory.description) as pos1,
RIGHT(1, LEFT(2, reponsitory.description)) as pos2,
RIGHT(1, LEFT(3, reponsitory.description)) as pos3. 

这应该比编译200个正则表达式使用更少的资源(尽管它仍然不太可能很快)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22691498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档