REGEXP_EXTRACT(word,r'(\w\w\'\w\w)')中的r代表正则表达式。

5

我在BigQuery 参考文档和re2 wiki中都找不到答案。

在BigQuery参考文档的正则表达式部分的所有示例中,每个正则表达式前都有一个'r',但我找不到它的含义。例如:

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

对我来说,它似乎是'regex'的强制转换或者其他什么类型的东西,因为它允许在后面的字符串中使用 '\' 和 '''。

感谢任何知道并回答这个问题的人 :)


3
搜索"原始字符串" - 至少在Python中是这个意思。 - Bergi
1个回答

14

来自维基百科:“一些语言提供了一种指定文字字面上不需要进行任何特定于语言的解释处理的方法。这避免了需要转义的需求,并产生了更易读的字符串。”

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接