【问题标题】:What is the meaning of r in REGEXP_EXTRACT(word,r'(\w\w\'\w\w)')REGEXP_EXTRACT(word,r'(\w\w\'\w\w)')中的r是什么意思
【发布时间】:2015-01-05 21:20:23
【问题描述】:

我在 BigQuery Reference 或 re2 wiki 中都找不到答案。

在 BigQuery Reference 中 Regex 部分的所有示例中,每个 regex 之前都有一个“r”,但我在任何地方都找不到它的含义。例如:

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

在我看来,它是 'regex' 之类的类型转换,因为它允许在以下字符串中使用 '\' 和 '''。

感谢任何知道并发布答案的人:)

【问题讨论】:

  • 搜索“原始字符串”——至少在 Python 中是这样的。

标签: regex google-bigquery


【解决方案1】:

来自 Wikipedia “一些语言提供了一种方法来指定要在没有任何特定语言解释的情况下处理文字。这避免了转义的需要,并产生更清晰的字符串。”

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

【讨论】:

    猜你喜欢
    • 2015-03-26
    • 2010-11-19
    • 2013-12-07
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多