2

特定の XML タグ内の文字列の一部を削除して置き換えるための正規表現を理解するのに苦労しています。可変部分を含む URL パスが多数あるため、特定の文字列と URL の最後のスラッシュの間のすべてを見つける必要があります。たとえば、次のようなタグと URL があるとします。

<bpoc:resourceMetadataLoc>http://app01/media/images/I//1951-1960_Embark_Object_Photos/1957.59.jpg</bpoc:resourceMetadataLoc>

また

<bpoc:resourceMetadataLoc>http://app01/media/images/CONTEMPORARY/1986-2005/1991.2.jpg</bpoc:resourceMetadataLoc>

出力は次のようになります

<bpoc:resourceMetadataLoc>http://app01/media/Previews/1957.59.jpg</bpoc:resourceMetadataLoc>

これは私が得た限りですが、最後から2番目のスラッシュではなく、文字列の最後のスラッシュをキャプチャします。

(<bpoc:resourceMetadataLoc>http://app01/media/images)+(.*[/])

その正規表現は次のものをキャプチャします。

<bpoc:resourceMetadataLoc>http://app01/media/images/I//1951-1960_Embark_Object_Photos/1957.59.jpg</

</bpoc:resourceMetadataLoc>クエリからビットを除外し、URL の最後のスラッシュより前のすべてをキャプチャするには、正規表現に何を追加する必要がありますか?

4

1 に答える 1

1

これは XML であるため、URL 自体に(エスケープされていない)<やを含めることはできません。>これを有利に使用できます。

<bpoc:resourceMetadataLoc>http://app01/media/images[^<]*/([^<]*)

これにより、URL の最後のセグメント (「1957.59.jpg」など) がキャプチャされます。これは、タグの終わり (最初の[^<]*) まですべてを貪欲に一致させ、次にバックトラックして最も近い (つまり最後) に一致させ、/そのスラッシュ ( ) の後のすべてをグループ 1 にキャプチャして、([^<]*)使用できるようにすることで機能します。交換ステップ中です。

于 2012-06-04T22:17:18.137 に答える