【发布时间】:2014-05-10 16:25:59
【问题描述】:
我使用http://www.regexr.com/ 尝试了解我在 PHP 中应用的正则表达式 sintaxis。但是,我确信有更好的方法来编写这个表达式:
(?:\"price|price\")+(?:[^\>])*(?:\>)+((?:[^\>](?!\/))+)+(?:[^\>])*(?:\>)*([^\<]*(?!\/\>))
我正在尝试检索以下文本的价格值:
A <span class="price-sales">$80.00</span>
B <div class="ProdMargin"><font class="items_price" >€19,75</font></div>
C <div class="price" id="text-price"> foo
<span >EUR 149 €</span>
</div>
D <div class="price" id="text-foo"> <span >149 €</span></div>
E <div id="text-price" id="foo"> <span >149 EUR</span></div>
F <div class="foo">bar</div>
所需的数学是:
- 80.00 美元
- B €19,75
- C 欧元 149 欧元
- 149 欧元
- 149 欧元
主要问题是我必须创建 2 个“匹配组”: (A,B) 一个用于普通匹配和 (C,D,E) 值在二度子级中。
问题:
- 1) 我做错了什么吗?还是可以改进?
- 2) 我可以只得到一个结果“匹配组”吗?
非常感谢!
【问题讨论】:
-
嗯...有人写了一个kickass答案,但它刚刚被删除?
标签: php regex preg-match regex-negation regex-lookarounds