[英]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?
該演示應解釋其工作原理。 您之所以不在,是因為它正在尋找不匹配的7 businessdays
工作日。
盡管如果您不想接受business week/hour
,則需要進一步修改:
\d+\s(?:hour|week|(?:business )?day)s?
您需要為此調整正則表達式:
>>> 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 day
, hour
或week
,最后是一個可選的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.