我对Python中的正则表达式有疑问。我正在开发一个项目,我必须解析一堆巨大的文本文件并将它们的某些部分提取到电子表格中。其中一部分是一堆批量,以"NUMBERxNUMBERxNUMBER..."
的形式表示。它们存储在更大的行中间,如下所示:
Spring st. , No. 208, 18.9x42.2x49x10x8x100. 'John S. Giles, exr. to Herman Goodstein, W. D. . 11,100
我试图设计一个可以产生的正则表达式:
18.9x42.2x49x10x8x100
但我不太清楚从哪里开始。设计这种类型的表达式的最佳方法是什么,其中可以有任意数量的数字(带小数点),用x分隔?空白会停止分析。 提前感谢您的帮助,我真的很感激!
答案 0 :(得分:2)
>>> import re
>>> s = '''Spring st. , No. 208, 18.9x42.2x49x10x8x100. 'John S. Giles, exr. to Herman Goodstein, W. D. . 11,100'''
>>> re.search('(?:\d+(?:\.\d+)?x)+\d+(?:\.\d+)?', s)
<_sre.SRE_Match object; span=(22, 43), match='18.9x42.2x49x10x8x100'>
>>> _.group(0)
'18.9x42.2x49x10x8x100'
正则表达式由\d+(?:\.\d+)?
两次组成,它只是一个数字,可选地后跟一个带有更多数字的点。我们这样做是为了防止尾随点。表达式会尽可能多地搜索此“数字部分”,然后搜索x
,然后需要最终的“数字部分”。