【发布时间】:2014-12-15 19:27:16
【问题描述】:
我正在使用 preg_match 和 regex 从网页获取信息。
该页面包含以下文本:
Choose platform: Xbox
Barcode (EAN) no: 0123456789
第一个获得平台的正则表达式工作:
preg_match_all('#Choose Platform:.*?>([^<]+)</a>#is', $file, $platform);
但是,在尝试获取第二段文本时,我遇到了问题:
preg_match_all('#<b>Barcode \\(\\EAN\\) No:</b>.*?>([^<]+)</a>#is', $file, $matches1);
我试图逃脱括号但没有运气?转义括号时是“\”还是“//”?
【问题讨论】:
-
嗯,你在正则表达式中有一个错字。
Barcode!=Bar code。此外,无需转义E,而且您的正则表达式中似乎有一些 HTML 不在您提供的示例文本中。 -
@EdCottrell 抱歉,它们只是拼写错误,我没有放置整个 HTML,因为我认为它不会有所作为。我关心的是如何转义括号?
-
\,而不是//。但是,是的,如果您希望我们帮助您解决问题,HTML 绝对会有所作为。 -
为了匹配你的例子:
preg_match_all('#Barcode \(EAN\) no:([^<]+)#is', $file, $matches1);看到它只是\(EAN\) -
由于你用单引号分隔字符串,引擎会看到
\\(,这意味着它正在寻找文字转义,然后是捕获组元字符的开始。
标签: php regex preg-match preg-match-all