避免在regex中捕获不需要的可选词

2024-09-30 01:37:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的例子

text = '. Double-Decker advances to 1st on throwing error. Chris Parmelee to 3rd.'

我想捕捉以下信息

['Double-Decker',  '1st']
['Chris Parmelee', '3rd']

我正在尝试下面的正则表达式

'\. ([A-Za-z\'\-\s]*) (?:advances)*to (1st|2nd|3rd)'

但它是匹配的

['Double-Decker advances', '1st']
['Chris Parmelee'        , '3rd']

我应该如何处理不需要的可选单词advances


Tags: totext信息onerror单词例子chris
1条回答
网友
1楼 · 发布于 2024-09-30 01:37:41

用途:

\. ([A-Za-z\'\-\s]*?) (?:advances )*to (1st|2nd|3rd)

在regex中有两个小错误:

  1. *运算符是贪婪的:应该使用[A-Za-z\'\-\s]*?
  2. advances后面没有空格,因此它永远不会匹配“advances to”

相关问题 更多 >

    热门问题