我有以下两种类型的输出我需要进行正则表达式匹配&替换:
<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>");
但它在某个地方有点偏离。我认为这种变化是不对的;有人能指出我正确的方向吗?
答案 0 :(得分:1)
幸运的是,.NET支持可变长度的lookbehinds:
(?<=<span\s+class=\1?(?:Price|SalePrice)(['"])?>)([^<]*)(?=<\/span>)
我在类名周围添加了匹配模式的单/双引号,因为作为有效的HTML,他们应该拥有它。
答案 1 :(得分:0)
这将一直给你跨越。
"<span class=(Price|SalePrice)>(.*?)<\/span>"
答案 2 :(得分:0)
如果您不想匹配Price / SalePrice,您应该使用:
<span class=(?:Price|SalePrice)?>(.*?)<\/span>