字符串上的正则表达式,该字符串可以是逗号分隔的,也可以不是逗号分隔的

2024-06-06 04:16:43 发布

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

我试图捕获一行字符串,该行可能有逗号,也可能没有逗号(:只给出0或1个逗号)。因此,数据如下所示,正则表达式将逐行执行

cake,strawberry
shortbread
english-muffin,blueberry

第一组的预期捕获:

cake
shortbread
english-muffin

最后一组的期望捕获:

strawberry

blueberry

我最初尝试的是(.*?)(,)?(.*),但它将cake,strawberry作为一个组捕获。我也试过其他几种,但都差不多。我应该把它作为两种不同的模式吗


Tags: 数据字符串english模式逗号cakemuffinblueberry
1条回答
网友
1楼 · 发布于 2024-06-06 04:16:43

使用([^,]*)(?:,(.*))?

  • ([^,]*)匹配零个或多个“非逗号”并捕获它
  • (?:,(.*))?可选地,匹配一个逗号并捕获它后面的所有内容

注意:(?:)是一个非捕获组

Python演示:

import re

lines = ['cake,strawberry',
         'shortbread',
         'english-muffin,blueberry']

for line in lines:
    print(re.match('([^,]*)(?:,(.*))?',line).groups())
('cake', 'strawberry')
('shortbread', None)
('english-muffin', 'blueberry')

相关问题 更多 >