簡體   English   中英

Python中的可選字符串匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM