qdwxzzy 发表于 2020-3-23 08:19:48

初学正则表达式,碰到一个编程问题


代码:
import re

html = 'k%3D","view_price":"138.00","view_fee":"0.00","item_loc":"广东item.htm?id\u003d57425801691405335569ed55e27b\u0026pm3d18","view_price":"149.00","view_fee":"0.00","item_loc" '

plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html)
print(plt)
      
            

结果:
['"view_price":"138.00"', '"view_price":"149.00"']

我的问题:
正则表达式 :r'\"view_price\"\:\"[\d\.]*\"'

个人对这个正则表达式不理解的地方是:    [\d\.]*   这个意思是匹配一个数字和一个.无数次???    这个是怎么做到把138.00和149.00匹配出来的?



      

wp231957 发表于 2020-3-23 08:21:29

中括号里就是说有就行,不是必须全有

永恒的蓝色梦想 发表于 2020-3-23 10:13:20

[\d\.]就是,是一个字符集

用*匹配的时候,只要这个字符在前面的字符集中,就可以匹配。

qdwxzzy 发表于 2020-3-24 10:56:12

永恒的蓝色梦想 发表于 2020-3-23 10:13
[\d\.]就是,是一个字符集

用*匹配的时候,只要这个字符在前面的字符集中,就可以匹配。

其实我一开始觉得的匹配应该是   \d*\.\d*      然后放到代码里也没问题      他这个写法太简练了真的很难理解

永恒的蓝色梦想 发表于 2020-3-24 11:11:49

qdwxzzy 发表于 2020-3-24 10:56
其实我一开始觉得的匹配应该是   \d*\.\d*      然后放到代码里也没问题      他这个写法太简练了真的 ...

正则表达式就是这样的,慢慢来吧
页: [1]
查看完整版本: 初学正则表达式,碰到一个编程问题