如何使用正则表达式在括号内插入引号

时间:2016-01-29 14:03:39

标签: java regex

我有一串SVG标记,其中包含多个这些标记:

url(#586-xr___83_193_101__rgba_243_156_18_1__0-rgba_243_156_18_1__100)

我需要他们这样:

url('#586-xr___83_193_101__rgba_243_156_18_1__0-rgba_243_156_18_1__100')

在括号内加引号。

这些将在包含许多不同标记的长字符串中混合,因此需要非常准确。

2 个答案:

答案 0 :(得分:1)

你可以使用这样的正则表达式:

\((.*?)\)

使用替换字符串('$1')

这个想法是捕获括号内的所有内容并连接'

所以,你可以使用这样的代码:

String str = "url(#586-xr___83_193_101__rgba_243_156_18_1__0-rgba_243_156_18_1__100)";
str = str.replaceAll("\\((.*?)\\)", "('$1')");

//Outuput: url('#586-xr___83_193_101__rgba_243_156_18_1__0-rgba_243_156_18_1__100')

<强> IdeOne example

如果您想要更好的性能正则表达式,可以使用:

str = str.replaceAll("\\(([^)]*)\\)", "('$1')");

答案 1 :(得分:0)

ReplaceAll删除字符串的一部分,然后添加不相关且不变的新内容。

因为替换字符串在两边都不一样,我想象的唯一解决方案(使用RegEx和ReplaceAll的约束)是两次完成的:

String Str = "url(#586-xr___83_193_101__rgba_243_156_18_1__0-rgba_243_156_18_1__100)";
Str = Str.replaceAll("\\(", "('"); // replace left parenthesis
Str = Str.replaceAll("\\)", "')"); // replace right parenthesis

System.out.print("Return Value: " + Str);
// Return Value: url('#586-xr___83_193_101__rgba_243_156_18_1__0-rgba_243_156_18_1__100')

您可以对其进行测试here