簡體   English   中英

正則表達式匹配Python中的幾個字符串

[英]regex to match several string in Python

我對Python中的正則表達式有疑問。

可能的變化是

10小時,12周或7個工作日。

我想讓我的正則表達式像

string = "I have an 7 business day trip and 12 weeks vacation."
re.findall(r'\d+\s(business)?\s(hours|weeks|days)', string)

因此我希望找到“ 7個工作日”和“ 12個星期”,但返回None

string = "I have an 7 business day trip and 12 weeks vacation."
print re.findall(r'\d+\s(?:business\s)?(?:hour|week|day)s?', string)
['7 business day', '12 weeks']

\d+\s(?:business\s)?(?:hour|week|day)s?

Debuggex演示

該演示應解釋其工作原理。 您之所以不在,是因為它正在尋找不匹配的7 businessdays工作日。

盡管如果您不想接受business week/hour ,則需要進一步修改:

\d+\s(?:hour|week|(?:business )?day)s?

Debuggex演示

您需要為此調整正則表達式:

>>> string = "I have an 7 business day trip and 12 weeks vacation."
>>> print re.findall(r'(\d+)\s*(?:business day|hour|week)s?', string)
['7', '12']

這與任何數字相匹配,后跟business dayhourweek ,最后是一個可選的s

類似於@anubhava的答案,但匹配“ 7個工作日”,而不僅僅是“ 7個”。 只需將右括號從\\ d +之后移到末尾:

re.findall(r'(\d+\s*(?:business day|hour|week)s?)', string)

\\ d + \\ s +(業務)?(小時|周|天)s?

暫無
暫無

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

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