[英]Optional String Match in Python
我想在這里使最后一個字符串為可選,以下是我的原始代碼:
[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{2,4}
以下是我嘗試過的代碼(獲取無效的括號錯誤):
[0-9]{1,2}\.[0-9]{1,2}\(?:.[0-9]{2,4})?
當前代碼正在捕獲話語:
12.2.17
3.04.2018
我進一步希望它通過將最后一部分設為可選來捕獲以下內容:
12.2
13.03
您似乎不小心逃脫了(
字符,而不是創建了一個非捕獲組。這是新的正則表達式:
[0-9]{1,2}\.[0-9]{1,2}(?:.[0-9]{2,4})?
您還可以以更緊湊的方式編寫正則表達式:
\d{1,2}\.\d{1,2}(\.\d{2,4})?
至於你的錯誤:
[0-9]{1,2}\.[0-9]{1,2}\(?:.[0-9]{2,4})?
# --^-- no backslash here!
或者,您可以使用
\d+\.\d+(?:\.\d+)?
參見regex101.com上的演示 。
Python
:
import re string = """ 12.2.17 3.04.2018 I further want it to capture the following by making the last part optional: 12.2 13.03""" rx = re.compile(r'(\\d+\\.\\d+(?:\\.\\d+)?)') print(rx.findall(string)) # ['12.2.17', '3.04.2018', '12.2', '13.03']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.