如何用正则表达式从一行文本中提取数值?



我是正则表达式的新手,帮助我从文本中提取必要的信息:

salespackquantity=1&itemCode=3760041","quantity_box_sales_uom"
&salespackquantity=1&itemCode=2313441","quantity_box

我需要分别取号码3760041和2313441。正则表达式应该是什么样的?

如果我们只是处理基于行的数据,如您所示,它可以像:

.*itemCode=([0-9]+).*

这是残酷的,但会做的工作。您将提取第一个匹配组。

虽然你的例子看起来不一致和截断,所以这可能会有所不同。如有其他条件,请提供详细信息。

>>> import re
>>> oneline = "salespackquantity=1&itemCode=3760041","quantity_box_sales_uom""
>>> match = re.search('.*itemCode=([0-9]+).*', oneline)
>>> match.group(0)
'salespackquantity=1&itemCode=3760041","quantity_box_sales_uom"'
>>> match.group(1)
'3760041'
你真的需要正则表达式吗?

可以说,regex似乎是一种简单的方法来获得您想要的东西,但它可能非常低效,这取决于您的用例和输入数据。

其他几个策略可能更容易:

  • 先删除不必要的数据,
  • 为您的特定内容使用适当的解析器(这里看起来像是CSV和URL查询字符串的混合),
  • 如果格式是固定的,甚至不用在适当的边界上剪切。

Regex功能强大,对于简单的场景可能过于强大。但是,如果是运行一次性数据提取脚本,或者如果开发工作的成本/收益分析值得这样做,则完全公平。

a = "example is the int and string 223576"
ext = []
b = "1234567890"
for i in a:
if i in b:
ext.append(i)
print(ext)

最新更新