RegEx在字符串中找到匹配的字符串变量,直到某个点并替换为另一个字符串

时间:2013-12-18 22:51:04

标签: regex replace string-comparison string-matching

我正在处理的示例文本。此文本是一个工具提示,存储在数据库中,用户可以使用WYSIWYG编辑器进行编辑。

示例工具提示:

BlahBlahBlahBlahBlahBlahBlahBlahBlahBlahBlahBlah
BlahBlahBlahBlah <a href="[SOME_COMPLETE URL]">BlahBlah</a>
BlahBlahBlahBlahBlahBlahBlahBlah

简而言之,我需要将href替换为我的app中的javascript函数:

<a href="www.myurl.com/page/page/page">BlahBlah</a>

转到:

<a href="javascript:void(0);" onclick="openOrFocus('www.myurl.com/page/page/page', 'windowName')">BlahBlah</a>

我正在尝试编写一个RegEx表达式来查找href标记,获取引号之间的所有内容。然后我需要使用上面的代码替换引号之间的所有内容,并将URL放在函数调用中。

这是我尝试过的但是它不起作用(我在使用正则表达式时很难)

myTooltipText.replaceAll(".*href\\s*=\\s*\(.*)\"","href=\"javascript:void(0);\" onclick="openOrFocus('[SOME_COMPLETE_URL]', 'windowName')";

我正在使用Java和Groovy。

编辑:网址永远不变;当他们进入深度上下文帮助时,他们会根据工具提示进行更改。

1 个答案:

答案 0 :(得分:1)

.*之前您不需要href,并且您正试图在您的捕获组中转义它的左括号。您还错过了替换文本中的引号,并在 replaceAll 函数末尾的结尾括号)处取消了。

请尝试以下操作,在您的引号和对替换中捕获组$1的引用之间进行捕获。

myTooltipText.replaceAll("href\\s*=\\s*\"([^\"]*)\"", "href=\"javascript:void(0);\" onclick=\"openOrFocus('$1', 'windowName')\"");

请参阅Working demo