繁体   English   中英

正则表达式无法扩展以在Python中找到相似的模式

[英]Regular expression cant be extended to find similar pattern in Python

我正在尝试匹配(dd / yy-dd / yy)或(0d / yyyy-0d / yyyy)的模式。 文本中相似模式的任何可能组合。

我的文字是:

 text  = ''' 09/14 - 18/18 some text 09/13 – 04/14 '''

我的模式是:

 r"b([\d]{1,2}[\s/-]+[\d]{2,4}[-:\s.]+\d{1,2}[\s/-]+[\d]{2,4}[\s/-]+)"

它成功匹配09/14-18/18。 但与文本中的09/13 – 04/14不匹配。 我遇到的另一个疑问是,如果我想检查是否说“ 09/14-”后跟“单词(列表中的任何单词)”或“ dd / yy或dd / yyyy”之类的模式,该怎么办?做。 我的意思是,如果它与我必须用“ 09/14”选择的任一支票相匹配。 即,如果匹配则为“ 09/14-word”,如果匹配则为“ 09/14-dd / yyyy”。

它成功匹配09/14-18/18。 但与文本中的09/13 – 04/14不匹配。

因为-是不同的字符。

\b([\d]{1,2}[\s/-]+[\d]{2,4}[-:–\s.]+\d{1,2}[\s/-]+[\d]{2,4}[\s/-]+)

DEMO

如果您不想捕获比赛后的空格,请使用此选项。

\b([\d]{1,2}[\s/-]+[\d]{2,4}[-:–\s.]+\d{1,2}[\s/-]+[\d]{2,4})\b

DEMO

如果我想检查是否说“ 09/14-”后跟“单词(列表中的任何单词)”或“ dd / yy或dd / yyyy”之类的模式,该怎么办。

\b[\d]{1,2}[\s/-]+[\d]{2,4}[-:–\s.]+(?:\d{1,2}[\s/-]+[\d]{2,4}|\w)

DEMO

>>> text  = ''' 09/14 - 18/18 some text 09/13 – 04/14 '''
>>> re.findall(r'\b([\d]{1,2}[\s/-]+[\d]{2,4}[-:–\s.]+\d{1,2}[\s/-]+[\d]{2,4})\b', text)
['09/14 - 18/18', '09/13 – 04/14']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM