在 Hive 的正则表达式中转义单引号
Escape single quote in regex in Hive
我从昨天开始尝试在配置单元中编写正则表达式
Select regexp_extract(MyColumn,'Clôture de l''intervention(.*)"typeid"',0) as MyColumn
from MyTable
这个正则表达式 return 是一个空结果,但它应该 return 一些东西。
如果我以这种方式尝试,更短的方式:
Select regexp_extract(MyColumn,'Clôture de l(.*)"typeid"',0) as MyColumn
from MyTable
它 return 有点问题所以我猜问题出在单引号上。
我如何转义它以将其包含在我的正则表达式中?
感谢您的帮助
您想使用“\”。那是一个[反斜杠][引用]。但也要记住你也可以偷懒,只用“。”它将匹配任何单个字符,但在这种情况下通常可以作为一个很好的作弊手段。
你应该使用:
regexp_extract(com_lib,'Clôture de l\'intervention(.*)"typeid"',0)
或
regexp_extract(com_lib,'Clôture de l.intervention(.*)"typeid"',0)
使用 spark 的示例,但这只是它工作的一个示例。 (并作为字符串转义,因此工作方式略有不同。)
>>> spark.sql("select regexp_extract('Clôture de l\'intervention122342\"typeid\"','Clôture de l\'intervention(.*)\"typeid\"',1) ").show()
+-------------------------------------------------------------------------------------------------+
|regexp_extract(Clôture de l'intervention122342"typeid", Clôture de l'intervention(.*)"typeid", 1)|
+-------------------------------------------------------------------------------------------------+
| 122342|
+-------------------------------------------------------------------------------------------------+
但这确实向您展示了如何处理正则表达式以使其工作。从简单开始:
select 'Clôture de l'
这应该是开箱即用的,而且很简单。然后玩它直到每次添加一个字符,直到你得到正确的语法
select 'Clôture de l\''
一旦你把它改正为一个字符串,然后将它移到正则表达式中并再次一次添加一个字符使其工作。
select regexp_extract( 'Clôture de l\'intervention' 'Clôture de l\'',0)
你不需要在 table 上 运行,只需要使用一个字符串,慢慢地一个一个地添加字符就可以了。
我从昨天开始尝试在配置单元中编写正则表达式
Select regexp_extract(MyColumn,'Clôture de l''intervention(.*)"typeid"',0) as MyColumn
from MyTable
这个正则表达式 return 是一个空结果,但它应该 return 一些东西。
如果我以这种方式尝试,更短的方式:
Select regexp_extract(MyColumn,'Clôture de l(.*)"typeid"',0) as MyColumn
from MyTable
它 return 有点问题所以我猜问题出在单引号上。
我如何转义它以将其包含在我的正则表达式中?
感谢您的帮助
您想使用“\”。那是一个[反斜杠][引用]。但也要记住你也可以偷懒,只用“。”它将匹配任何单个字符,但在这种情况下通常可以作为一个很好的作弊手段。
你应该使用:
regexp_extract(com_lib,'Clôture de l\'intervention(.*)"typeid"',0)
或
regexp_extract(com_lib,'Clôture de l.intervention(.*)"typeid"',0)
使用 spark 的示例,但这只是它工作的一个示例。 (并作为字符串转义,因此工作方式略有不同。)
>>> spark.sql("select regexp_extract('Clôture de l\'intervention122342\"typeid\"','Clôture de l\'intervention(.*)\"typeid\"',1) ").show()
+-------------------------------------------------------------------------------------------------+
|regexp_extract(Clôture de l'intervention122342"typeid", Clôture de l'intervention(.*)"typeid", 1)|
+-------------------------------------------------------------------------------------------------+
| 122342|
+-------------------------------------------------------------------------------------------------+
但这确实向您展示了如何处理正则表达式以使其工作。从简单开始:
select 'Clôture de l'
这应该是开箱即用的,而且很简单。然后玩它直到每次添加一个字符,直到你得到正确的语法
select 'Clôture de l\''
一旦你把它改正为一个字符串,然后将它移到正则表达式中并再次一次添加一个字符使其工作。
select regexp_extract( 'Clôture de l\'intervention' 'Clôture de l\'',0)
你不需要在 table 上 运行,只需要使用一个字符串,慢慢地一个一个地添加字符就可以了。