2011-05-27 61 views
0

我有以下字符串:PCRE:(+)和( - )向前看/後面(正則表達式)

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

而且我想提取:

  • CAR123
  • RED
  • 車是紅色 - 它的快速

我至今是:

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

但我不知道如何設置積極和消極的前瞻和lookbeheads,當他們不在字符串邊界。

我知道,它是HTML ...我以前就聽說過......「不要用正則表達式來解析html ...」 我不需要任何比這更精細的東西。

幫助表示讚賞。

謝謝!

回答

1

更好地利用解析器,但如果你的鏈接總是格式化完全相同的方式(無標識,類,額外的參數,不同順序的參數等,請嘗試:

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

與穆的建議不同的是貪婪。

+0

事實上,貪婪是踢球者。謝謝! – 2011-05-27 07:23:24

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