在字符串中提取字符串并忽略搜索字符串

2024-10-02 16:29:18 发布

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

我有一个字符串:

string="soupnot$23.99dedarikjdf$44.65 notworryfence$98.44coyoteugle$33.94rock$2,300.00"

我想提取数字23.99, 44.65, 98.44,33.44, 2,300.00。我有这个正则表达式

\$(.*[^\s])

这有两个问题

  1. 它返回“$”符号。我只想要号码
  2. 它只适用于数字末尾有空格的情况,但有时可能有字母,在这种情况下不起作用

谢谢


Tags: 字符串string字母符号情况数字号码空格
2条回答

您可以使用regex,如下所示:

import re
string="soupnot$23.99dedarikjdf$44.65 notworryfence$98.44coyoteugle$33.94rock$2,300.00"

res = re.findall(pattern="[\d.,]+", string=string)

输出:

['23.99', '44.65', '98.44', '33.94', '2,300.00']

试试这个正则表达式:

(?<=\$)\d+(?:,\d+)*(?:\.\d+)?

Click for Demo

解释

  • (?<=\$)-正向查找前面有$的位置
  • \d+-匹配1+个数字的出现次数
  • (?:,\d+)*-匹配,的0+次出现,后跟1个或多个数字
  • (?:\.\d+)?-匹配一个.,后跟1+个数字?最后使这个小数部分成为可选的

相关问题 更多 >