【发布时间】:2016-04-27 21:04:23
【问题描述】:
我有几个可能的输入字符串,如下所示:
Roll|N/A|300x60|(1x1)|AAA|BBB
Desktop|1x1|(1x1)|AAA|BBB
Desktop|NA|(NA)|AAA|BBB
Roll|N/A|N/A|(1x1)|AAA|BBB
从中,我正在尝试检测\d+x\d+ 类型的模式(例如,第一行的“300x60”、“1x1”;第二行的“1x1”、“1x1”;第三行的None ; 和最后一个的'1x1')。有人可以告诉我如何编写 Python 正则表达式搜索来捕获给定字符串中这种模式的 none 或一个或多个 出现吗?我已经在下面尝试过,它只捕获给定句子中模式的第一次或第二次出现。谢谢!
r = re.search('(\(?\d+x\d+\)?)+', my_str)
r.group() # only gives me '320x50' for the first input above
【问题讨论】:
-
re.findall(pattern, test_str)与r'\(?\d+x\d+\)?'或r'\d+x\d+' -
只需使用
re.findall而不是re.search- 你甚至不需要分组括号 -
@WiktorStribiżew,谢谢!我应该删除这个问题还是留下它?
-
@user1330974 这完全取决于您。如果您认为这个问题不再有价值,您可以决定将其删除,但请注意,如果您在太短的时间内过于频繁地这样做,可能会导致问题被禁止。 (因此,如果这是您第一次删除,请不要担心)