簡體   English   中英

為什么我的正則表達式不能正確返回group(0)?

[英]Why my regex does not return group(0) properly?

我想從大量文件中查找日期。 該日期為一行,格式為"21 September 2010" 每個文件中只有一個這樣的日期。

以下代碼僅返回月份,例如"September" 為什么group(0)不能給我像"21 September 2010"這樣的整體信息? 這里缺少什么? 謝謝!

months = ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")

pattern = r"^\d{2} +" + "|".join(months) + r" +\d{4}$"
match = re.search(pattern, text)
if match:
    fdate = match.group(0)

當您打印正則表達式時,您會看到它看起來像^\\d{2} +January|February|March|April|May|June|July|August|September|October|November|December +\\d{4}$ 當您將其應用於21 September 2010 ,您會看到它與September匹配,因為^\\d{2} +在字符串的開頭只能與January匹配,因為未對月份進行分組。

您需要對月份替代方案進行分組

pattern = r"^\d{{2}} +(?:{}) +\d{{4}}$".format("|".join(months))

參見Python演示

import re
text = "21 September 2010"
months = ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
pattern = r"^\d{{2}} +(?:{}) +\d{{4}}$".format("|".join(months))
match = re.search(pattern, text)
if match:
    fdate = match.group(0)
    print(fdate) # => 21 September 2010

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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