REGEXP_EXTRACT中的r是什么意思(word,r'(\ w \ w \'\ w \ w)')

时间:2014-11-09 14:12:55

标签: regex google-bigquery

我无法在BigQuery Reference或re2 wiki中找到答案。

在BigQuery Reference中的Regex部分的所有示例中,每个正则表达式之前都有一个'r',但我无法找到它的含义。例如:

REGEXP_EXTRACT(word,r'(\ w \ w \'\ w \ w)')

在我看来,它是'正则表达式'的类型,因为它允许在下面的字符串中使用'\'和'''。

感谢所有知道并发布答案的人:)

1 个答案:

答案 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