Regex在html标记中匹配
本文关键字:html Regex | 更新日期: 2023-09-27 17:58:17
我有以下两种类型的输出,需要进行正则表达式匹配&替换:
<span class=Price>$9.99</span>
<span class=RegularPrice>$9.99</span><span class=SalePrice>$4.99</span>
我想做的是在第一个例子中匹配9.99美元;第二季度为4.99美元。(如果类是Price或SalePrice ,则基本上与标签的内容匹配
我试过几个例子;但它们要么匹配整个跨度;或者从SalePrice开始,继续
我现在得到的是:
var regex = new Regex(@"<span class=Price|SalePrice>(.*?)<'/span>");
但它有点偏离了某个地方。我认为这种交替不太正确;有人能给我指正确的方向吗?
幸运的是,.NET支持可变长度的lookbehinds:
(?<=<span's+class='1?(?:Price|SalePrice)(['"])?>)([^<]*)(?=<'/span>)
我在类名周围添加了单/双引号匹配模式,因为作为一个有效的HTML,它们应该有它。
这将为您提供所有时间跨度。
"<span class=(Price|SalePrice)>(.*?)<'/span>"
如果你不想匹配价格/销售价格,你应该使用:
<span class=(?:Price|SalePrice)?>(.*?)<'/span>