正则表达式中的组超出范围

2024-03-28 16:10:02 发布

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

time_sentences = ["Monday: The doctor's appointment is at 2:45pm.", 
                  "Tuesday: The dentist's appointment is at 11:30 am.",
                  "Wednesday: At 7:00pm, there is a basketball game!",
                  "Thursday: Be back home by 11:15 pm at the latest.",
                  "Friday: Take the train at 08:10 am, arrive at 09:00am."]

df['text'].str.replace(r'(\w+day\b)', lambda x: x.group(0)[:3])

请注意,上面我们有一个组,因此我们使用0访问该组。你知道吗

我期待如果我们通过1为组,我们应该得到错误,因为超出范围像没有这样的组,但我们没有得到那个错误。你知道吗

df['text'].str.replace(r'(\w+day\b)', lambda x: x.group(1)[:3])

如果我们通过2组,那么我们就得到了超出范围的错误。你知道吗

df['text'].str.replace(r'(\w+day\b)', lambda x: x.group(2)[:3])

有什么原因吗?你知道吗


Tags: thelambdatextdfis错误groupam
1条回答
网友
1楼 · 发布于 2024-03-28 16:10:02

因为()捕获组将捕获的字符存储在第一个组索引中。.group().group(0)应返回所有匹配的字符,其中索引1或n返回由相应捕获组1或n捕获的所有字符

如果从regex中删除那些()捕获组,则访问x.group(1)时会抛出错误

相关问题 更多 >