0

我从这篇文章中得到了以下正则表达式(用于提取标签属性的正则表达式)。

(\S+)=["\']?((?:.(?!["\']?\s+(?:\S+)=|[>"\']))+.)["\']?

我创建了以下 PHP 代码,它运行良好。我从 preg_match_all() 函数中 得到 [ id='gridview1' and 'id' and 'gridview1' ]。

$regexp = '/(\S+)=["\']?((?:.(?!["\']?\s+(?:\S+)=|[>"\']))+.)["\']?/';
$text = '<asp:gridview id=\'gridview1\' />';

$matches = null;
preg_match_all($regexp, $text, $matches);

print_r($matches);

应该如何将正则表达式更改为也返回“asp”和“gridview”?(或“Foo”和“bAR”,当我使用:

<Foo:bAR />

4

2 回答 2

1

([a-zA-Z]+)\:([a-zA-Z]+) 适用于 Foo:bar 之类的东西

<.*?([a-zA-Z])+.*?\:.*?([a-zA-Z])+.*?\/>适用于 < Foo : BArrr />

可以根据您的要求以及您是否知道强制执行某种类型的格式来优化事情。

于 2009-05-27T00:03:00.870 回答
1

您不应该使用正则表达式来解析 HTML

于 2009-05-27T06:13:53.840 回答