我无法在BigQuery Reference或re2 wiki中找到答案。
在BigQuery Reference中的Regex部分的所有示例中,每个正则表达式之前都有一个'r',但我无法找到它的含义。例如:
REGEXP_EXTRACT(word,r'(\ w \ w \'\ w \ w)')
在我看来,它是'正则表达式'的类型,因为它允许在下面的字符串中使用'\'和'''。
感谢所有知道并发布答案的人:)
答案 0 :(得分:10)
来自维基百科"一些语言提供了一种方法,用于指定在没有任何语言特定解释的情况下处理文字。这避免了转义的需要,并产生更易读的字符串。"
http://en.wikipedia.org/wiki/String_literal#Raw_strings
例如,这看起来像一个有效的正则表达式,但转义符被错误解释:
SELECT REGEXP_EXTRACT("ab'cd", '(\w\w\'\w\w)')
Error: Invalid string literal: '(\w\w\'\w\w)'
我可以通过两种方式解决这个问题。使用原始字符串,或逃避转义:
逃离逃脱:
SELECT REGEXP_EXTRACT("ab'cd", '(\\w\\w\'\\w\\w)')
ab'cd
原始字符串:
SELECT REGEXP_EXTRACT("ab'cd", r'(\w\w\'\w\w)')
ab'cd