我目前正在编写一个正则表达式来查找字符串中的单位和大小(或者它可以作为维度)。例如:“产品:A,2 x 3.5 加仑瓶”
为简单起见,我删除了所有空格,因此变为:
“产品:A,2x3.5gallonbottles”
我的正则表达式如下:
numAndSize = re.compile(r'\d+[xX]\d+(\.\d+)?')
但是当我尝试使用 findall 时,会发生这种情况:
In [47]: numAndSize.findall("Product:A,2x3.5gallonbottles")
Out[47]: ['.5']
我 - 只 - 得到这个字符串中的 '.5',而不是整个表达式
但是,使用搜索和组可以按预期工作:
In [50]: numAndSize.search("Product:A,2x3.5gallonbottles").group(0)
Out[50]: '2x3.5'
从那里,我尝试将我的正则表达式更改为不包含可选的小数,然后在上面运行 findall。
In [51]: numAndSize = re.compile(r'\d+[xX]\d+')
In [52]: numAndSize.findall("Product:A,2x3.5gallonbottles")
Out[52]: ['2x3']
这种行为背后有原因吗?出于我的目的,我当然可以使用 .search().group(),但我个人喜欢 findall,因为输出以干净的格式返回了更多信息。