正则表达式:使用c:url标记查找并替换url

时间:2011-05-13 07:02:45

标签: regex

我有一个问题是要构建好的正则表达式来查找和替换。我需要替换许多.jsf个文件中的所有网址。我希望XXX<c:url value="URL_WITHOUT_XXX"/>替换溃疡。以下示例。

我坚持使用查找正则表达式"XXX(.*)"并替换表达式"<c:url value="\1"/>",但我的find表达式与长字符串匹配,例如"XXX/a" style="",但需要仅匹配第一个{{1} (href结束)。有人帮忙吗?

我有:

"

我想:

<a href="XXX/a" style="">
<a href="XXX/b" >
<a href="XXX/c" ...>

PS:抱歉我的英语很差;)

修改 我在Eclipse中使用Find / Replace(正则表达式)

1 个答案:

答案 0 :(得分:3)

您应该指定您正在使用的语言。

以下正则表达式符合您的要求:

<a href="XXX[^\"]*"

如果您想拥有某些特定价值,可以根据需要对正则表达式进行分组。例如:

<a href="(XXX[^\"]*)"

会在第一组中给你:

XXX/a
XXX/b
XXX/b

如果您只想拥有/a/b/c,可以将其分组:

<a href="XXX([^\"]*)"

修改
我将解释<a href="XXX[^\"]*"的作用:

  • 匹配:<a href="XXX
  • 然后它应匹配任何,除了"零次或多次:[^\"]*
  • 最后匹配",这不是必需的

当您执行:[^abc]时,您告诉它匹配除abc之外的任何内容。 因此[^\"]是:匹配"以外的任何内容。

量词*表示零次或多次,因此a*将匹配空字符串,或aaaaaa ,. ..

最后一件事:群组

如果您希望保持整个匹配的值appart,以便您可以对其执行任何操作,则可以使用组:(something)