我正在使用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中的一个或多个。
谢谢。
发布于 2016-08-15 19:16:15
在正则表达式中使用$进行精确匹配。
SELECT REGEX_MATCH(PC_Rating, r'PG$')r'PG$'将匹配所有以PG结尾的字符串。您可以通过在开始处添加行锚点^的开始来进行更精确的匹配。
SELECT REGEX_MATCH(PC_Rating, r'^PG$')发布于 2016-08-16 02:12:22
若要与以下评级列表中的"PG“匹配,请使用下面的选项。它不依赖于此评级在列表中的位置(开始、结束或在中间...)
WHERE REGEXP_MATCH(PC_Rating, r"\bPG\b")注意,REGEXP_MATCH是一个相对昂贵的函数--因此,如果"RG“值是列中唯一需要的值--您应该使用
WHERE PC_Rating = "PG" 为了匹配PG13*, where * can be one or many of the following [VSLNP],您可以使用下面的
WHERE REGEXP_MATCH(PC_Rating, r"\bPG13(V|S|L|N|P)*\b") https://stackoverflow.com/questions/38953718
复制相似问题