0

我有以下字符串:

<A href="CarPage.asp?parent=CAR123+++&Color=RED">The Car is Red - Its Fast</a>

我想提取:

  • CAR123
  • 红色的
  • 这辆车是红色的——它的速度很快

到目前为止,我所拥有的是:

(?<=<A href="CarPage\.asp\?parent=)[A-Za-z0-9]*(\+\+\+&Color=)[A-Za-z0-9]{3}(\">)[A-Za-z0-9\- ]*(?=</a>)

但是当它们不在字符串边界上时,我不确定如何设置正负前瞻和后视。

我知道,它是 HTML……我以前听说过……“不要用正则表达式解析 html……”我不需要比这更详细的东西了。

帮助表示赞赏。

谢谢!

4

2 回答 2

2

你不需要任何复杂的东西,你可能会摆脱这个:

/parent=(\w+).*Color=(\w+).*>(.*)</

然后将零件从$1$2和中拉出$3.*根据您的实际输入的可变性,您可能需要稍微收紧部分。

例如,这部分 Perl:

my $s = '<A href="CarPage.asp?parent=CAR123+++&Color=RED">The Car is Red - Its Fast</a>';
$s =~ /parent=(\w+).*Color=(\w+).*>(.*)</;
print join("\n", $1, $2, $3), "\n";

输出:

CAR123
RED
The Car is Red - Its Fast
于 2011-05-27T06:40:10.430 回答
1

最好使用解析器,但如果您的链接始终以完全相同的方式格式化(没有 id、类、额外参数、不同顺序的参数等,请尝试:

parent=(\w+?)\+*&Color=(\w+?)">(.*?)<

与穆的建议不同的是贪心。

于 2011-05-27T06:57:28.880 回答