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>

这大约是我得到的,但它捕获字符串中的最后一个斜杠,而不是倒数第二个斜杠:

(<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”)。它的工作原理是贪婪地匹配直到标签结尾(第一个[^<]*)开头的所有内容,然后回溯以匹配最近的(即最后一个)/,然后将该斜杠(the)之后的所有内容捕获([^<]*)到第 1 组中,以便您可以使用在更换步骤中。

于 2012-06-04T22:17:18.137 回答