提取字符串中的字符串并省略搜索字符串

时间:2017-11-24 03:00:52

标签: python regex

我有一个字符串:

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. 它仅在数字末尾有空格时才有效,但有时可能会有字母,但在这种情况下不起作用。
  3. 感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:

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']

答案 1 :(得分:1)

试试这个正则表达式:

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

Click for Demo

<强>解释

  • (?<=\$) - 在$
  • 前面找到位置的正面观察
  • \d+ - 匹配1位以上的数字
  • (?:,\d+)* - 匹配,后跟一个或多个数字的0次出现
  • (?:\.\d+)? - 匹配.后跟1位数字。 ?最后使这个小数部分可选