[英]Regex to extract a string after a date in Python
有這兩種類型的字符串:
1625212673449-2021_07_02_07_55_05_111040_0CM.csv.zip
1635508858063-1625212673449-2021_07_02_07_55_05_111040_0CM.csv.zip
如何使用正則表達式字符串的111040
部分? 它總是 6 位數字。
我的方法是:“在 YYYY_MM_DD_HH_MM_SS_ 部分后取 6 位代碼”,但也歡迎任何其他方法。
編輯:最后一部分_0CM.csv.zip
可以更改。
提前致謝。
你想要一個正則表達式,所以這里是:
[0-9]{4}(?:_[0-9]{2}){5}_([0-9]{6})
[0-9]{4}
: 匹配年份的前 4 位數字,這是我們的起始錨點(?:_[0-9]{2}){5}
: 之后,后面跟着 5 個兩位數(月、日、小時、分鍾、秒),因此我們可以將它們全部分組並忽略它們([0-9]{6})
:獲取前一個表達式后面的 6 位數字。所需的數字在此正則表達式的捕獲組 1 中:
import re
regex = '[0-9]{4}(?:_[0-9]{2}){5}_([0-9]{6})'
re.search(regex, '1625212673449-2021_07_02_07_55_05_111040_0CM.csv.zip').group(1)
這個圖案怎么樣? 如果您逐行匹配每一行,則有效:
import re
pattern = re.compile('\d{4}_\d{2}_\d{2}_\d{2}_\d{2}_\d{2}_(\d{6})')
print(pattern.findall("1625212673449-2021_07_02_07_55_05_111040_0CM.csv.zip"))
如果找不到合適的匹配項,這將返回 ''。
import re
strings = [
"1625212673449-2021_07_02_07_55_05_111040_0CM.csv.zip",
"1635508858063-1625212673449-2021_07_02_07_55_05_111040_0CM.csv.zip",
'Test'
]
pattern = re.compile('_(\d{6})_')
digits = [pattern.search(string).group(1) if pattern.search(string) else '' for string in strings]
print(digits)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.