我有以下字符串:
3#White House, District Of Columbia, United States#US#USDC#DC001#38.8951#-77.0364#531871#382
如您所见,该字符串由#分隔。我的用例类似于一个简单的SPLIT(string,“#”)操作,但是regex给了我更多的灵活性。
我想匹配两次出现的#之间的字符。例如,第二次和第三次出现之间的字符应匹配:“ US”
我使用的是Google Bigquery,能够匹配字符串的前两个术语,但与第三个术语比较费劲:
REGEXP_EXTRACT(locations,r'^\d') as location_type, REGEXP_REPLACE(REGEXP_EXTRACT(locations,r'^\d#.*?#'),r'^\d*#|#','') as location_full_name, ????
位置是字符串,例如上面的字符串。
我已经找到了这个问题,但是我有多个范围,并且想指定比赛应该在哪两次比赛之间进行,例如第2次和第5次比赛。
您可以使用正则表达式,例如^(?:[^#]*#){N}([^#]*)whereN是所需的子字符串的数量减去1。要获取US,这是第三个值,您可以使用
^(?:[^#]*#){N}([^#]*)
N
US
^(?:[^#]*#){2}([^#]*)
见正则表达式演示
细节
^
(?:[^#]*#){2}
[^#]*
#
([^#]*)