使用'\\.H([0-9]+)' 模式,字面意思是“.H”和一个或多个数字,提取捕获组1(在括号中):
hive> select regexp_extract('/LIVERPOOL-HOTELS-THE-LINER-HOTEL.H1858765.HOTEL-INFORMATION','\\.H([0-9]+)',1);
OK
_c0
1858765
Time taken: 0.152 seconds, Fetched: 1 row(s)
hive> select regexp_extract('/AVON-GORGE-HOTEL.H444059.HOTEL-INFORMATION','\\.H([0-9]+)',1);
OK
_c0
444059
Time taken: 0.094 seconds, Fetched: 1 row(s)
hive> select regexp_extract('/NORTH-YORKSHIRE-HOTELS-ST-HILDAS-BOUTIQUE.H7265545.HOTEL-INFORMATION','\\.H([0-9]+)',1);
OK
_c0
7265545
Time taken: 0.056 seconds, Fetched: 1 row(s)
您需要用单个反斜杠 '\.H(\d+)' 屏蔽 Presto 的点字符:
select regexp_extract('LIVERPOOL-HOTELS-THE-LINER-HOTEL.H1858765.HOTEL-INFORMATION','\.H(\d+)',1);
结果:
1858765
您还可以在 Hive 和 Presto 中使用 \d+ 而不是 [0-9]+