首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >REGEX_MATCH与PG匹配,而非PG13匹配,反之亦然

问REGEX_MATCH与PG匹配,而非PG13匹配,反之亦然
EN

Stack Overflow用户
提问于 2016-08-15 18:53:42
回答 2查看 148关注 0票数 2

我正在使用bigquery,需要匹配PG级的电影,以及评级为PG和PG13的电影。

我正在努力为BQ的REGEX_MATCH实现找到一个好的源码,希望能得到一些帮助。

所以,为了找到PG,我尝试了SELECT REGEX_MATCH(PC_Rating, r'PG'),它找到了很好的值,但是当我像下面的SELECT REGEX_MATCH(PC_Rating,r'PG![0-9]{2}')或SELECT REGEX_MATCH(PC_Rating,r'PG^[0-9]{2}')那样尝试排除PG13时,它不会将PG与true匹配。

我的列有PG或PG13*,其中*可以是以下VSLNP中的一个或多个。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-15 19:16:15

在正则表达式中使用$进行精确匹配。

代码语言:javascript
复制
SELECT REGEX_MATCH(PC_Rating, r'PG$')

r'PG$'将匹配所有以PG结尾的字符串。您可以通过在开始处添加行锚点^的开始来进行更精确的匹配。

代码语言:javascript
复制
SELECT REGEX_MATCH(PC_Rating, r'^PG$')
票数 2
EN

Stack Overflow用户

发布于 2016-08-16 02:12:22

若要与以下评级列表中的"PG“匹配,请使用下面的选项。它不依赖于此评级在列表中的位置(开始、结束或在中间...)

代码语言:javascript
复制
WHERE REGEXP_MATCH(PC_Rating, r"\bPG\b")

注意,REGEXP_MATCH是一个相对昂贵的函数--因此,如果"RG“值是列中唯一需要的值--您应该使用

代码语言:javascript
复制
WHERE PC_Rating = "PG" 

为了匹配PG13*, where * can be one or many of the following [VSLNP],您可以使用下面的

代码语言:javascript
复制
WHERE REGEXP_MATCH(PC_Rating, r"\bPG13(V|S|L|N|P)*\b")  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38953718

复制
相关文章

相似问题

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