我正在使用bigquery,需要匹配评级为PG的电影的PG和评为此类电影的PG13。
我很难找到BQ实施REGEX_MATCH的良好来源,并希望得到一些帮助。
所以,为了找到PG,我尝试SELECT REGEX_MATCH(PC_Rating, r'PG')
找到了值,但是当我尝试排除PG13,如下SELECT REGEX_MATCH(PC_Rating,r'PG![0-9]{2}')
或SELECT REGEX_MATCH(PC_Rating,r'PG^[0-9]{2}')
时,它与PG不匹配。< / p>
我的列有PG或PG13 *,其中*可以是以下一个或多个[VSLNP]。
感谢。
答案 0 :(得分:2)
在正则表达式中使用$
进行完全匹配。
SELECT REGEX_MATCH(PC_Rating, r'PG$')
r'PG$'
会匹配以PG
结尾的所有字符串。您可以通过在开头添加行锚^
的开头来进行更精确的匹配。
SELECT REGEX_MATCH(PC_Rating, r'^PG$')
答案 1 :(得分:1)
要匹配您可以在下面使用的评级列表中的“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")