regex 在BigQuery中使用正则表达式匹配的问题

p8h8hvxi  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(95)

我正尝试使用GOV.UK网页上有关living in italy指导的文本在BigQuery中执行正则表达式搜索。
页面中的文本可以以原始形式here看到。
具体来说,我试图匹配短语“* 英国驾驶执照 *”。此短语在文本中出现一次(第355行)。
我能够使用CONTAINS_SUBSTR函数检测匹配;但是,我无法使用正则表达式匹配此短语。
以下语句返回FALSE
REGEXP_CONTAINS(text, r'(UK driving licence)')
我注意到:

  • 使用ARRAY_LENGTHREGEXP_EXTRACT_ALL函数的组合,我可以在文本中匹配单词'UK'正确的次数(71);
  • REGEXP_CONTAINS可以匹配'extend recognition of valid'(紧接在'*UK driving license *'之前的短语),返回TRUE;
  • REGEXP_CONTAINS可以匹配'*driving licenses in意大利 *'(紧跟/重叠'*UK driving licenses *'的阶段),返回TRUE
  • 这个问题似乎与区分大小写无关,因为我尝试了使用LOWER和使用小写搜索值手动匹配的各种组合

我完全被难住了,为什么我不能使用正则表达式来匹配这个模式--这是一个bug吗?

1bqhqjot

1bqhqjot1#

这是因为文本中有不可见的unicode字符。
我能够使用NORMALIZE函数(如Towards Data Science article中所述)来减少搜索文本中不可见字符的存在。
特别是,我使用了NFKC(规范化形式兼容性组合)选项。

相关问题