我正尝试使用GOV.UK网页上有关living in italy指导的文本在BigQuery中执行正则表达式搜索。
页面中的文本可以以原始形式here看到。
具体来说,我试图匹配短语“* 英国驾驶执照 *”。此短语在文本中出现一次(第355行)。
我能够使用CONTAINS_SUBSTR
函数检测匹配;但是,我无法使用正则表达式匹配此短语。
以下语句返回FALSE
:REGEXP_CONTAINS(text, r'(UK driving licence)')
个
我注意到:
- 使用
ARRAY_LENGTH
和REGEXP_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吗?
1条答案
按热度按时间1bqhqjot1#
这是因为文本中有不可见的unicode字符。
我能够使用
NORMALIZE
函数(如Towards Data Science article中所述)来减少搜索文本中不可见字符的存在。特别是,我使用了NFKC(规范化形式兼容性组合)选项。