问题描述
请我需要一个查询,该查询可以从Logmsg中提取序列号,困难的是它不遵循特定的模式,没有固定的定界符并且序列长度总是不相同
|LogMsg |
|------------------------------------------------------------------------------------------|
|Customer Receive CPE Indoor. serial 21530369847SKA011094,user:ahmed.o.haraz |
|Customer Receive CPE Indoor as change. serial :21530369847SK9078291,user:Abdullah.M160275|
|Customer Receive CPE Indoor as change. serial :T5D7S18802909825,user:ahmed.o.haraz |
|Customer Receive CPE Indoor as change. serial :T5D7S18802909830,user:ahmed.o.haraz |
|Customer Receive CPE Indoor. serial ZTERRTHJ9303771,user:Mohamed.E176246 |
|Customer Returned CPE. serial :21530369847SKA011094,user:ahmed.o.haraz |
结果将如下所示:
|Serial |
|--------------------|
|21530369847SKA011094|
|21530369847SK9078291|
|T5D7S18802909825 |
|T5D7S18802909830 |
|ZTERRTHJ9303771 |
|21530369847SKA011094|
解决方法
一种方法是regexp_replace()
,但是serial
之后的格式不同。所以:
select replace(replace(regexp_extract(logmsg,'serial [^,]+'),'serial ',''),':','')
,
此问题在https://stackoverflow.com/a/64254966/14311638
中回答结合使用myList = [0,12,30,32] #column A
for i in myList:
holder = i
temp_list=[i,]
for x in range(10): #change range(10) to range(250)
holder += 123
temp_list.append(holder)
#print(temp_list)
print(*temp_list,sep=' ')
和regexp_extract_all_sp
以及正确的正则表达式模式