引号之间的字符串的正则表达式并替换它

时间:2013-09-18 18:53:06

标签: java regex

你能帮我吗?

我这里有一个字符串:

a$20=A.createVar("/LIST/S_UNB/C_S001/D_0001/*var", a$1, this);

现在我想用“/”之前的值替换“”中的字符串。

这里我希望结果是

a$20=A.createVar("*var", a$1, this);

我试图尽可能使用最小的对象,我的正则表达式看起来像这样

\"([^\"]*)\"

这是对的吗?

2 个答案:

答案 0 :(得分:0)

假设引号不是表达式的一部分,请使用

[^/]+$

$表示字符串的结尾,这将使它仅返回最后一个'/'之后的值。 p>

答案 1 :(得分:0)

您可以使用此代码:

String s = "a$20=A.createVar(\"/LIST/S_UNB/C_S001/D_0001/*var\", a$1, this);";
// extract text between ""
String sub = s.replaceAll("^[^\"]*\"([^\"]*)\".*$", "$1");
// find last index of /
int i = sub.lastIndexOf('/');
// replace content between "" by token after last /
String repl = s.replaceFirst("\"[^\"]*\"", '"' + sub.substring(i+1) + '"');
//=> a$20=A.createVar("*var", a$1, this);