10

この正規表現は、HTML ページ内のすべてのhrefsrcリンクに一致するように記述しました。(パーサーを使用する必要があることはわかっています。これは実験中です):

/((href|src)\=\").*?\"/#後読みなし

正常に動作しますが、式の最初の部分を後読みパターンとして変更しようとすると、次のようになります。

/(?<=(href|src)\=\").*?\"/#後読みあり

「無効な後読みパターン」というエラーがスローされます。何かアイデアはありますか?後読みで何が問題になっていますか?

4

1 に答える 1

19

後読みには制限があります:

   (?<=subexp)        look-behind
   (?<!subexp)        negative look-behind

                      Subexp of look-behind must be fixed character length.
                      But different character length is allowed in top level
                      alternatives only.
                      ex. (?<=a|bc) is OK. (?<=aaa(?:b|cd)) is not allowed.

                      In negative-look-behind, captured group isn't allowed, 
                      but shy group(?:) is allowed.

(負の) 後読み内の非最上位レベルに代替を配置することはできません。

それらを最上位に配置します。また、一部の文字をエスケープする必要はありません。

/(?<=href="|src=").*?"/
于 2013-11-13T07:23:43.103 に答える