正则表达式用引号替换字符串

时间:2015-02-20 20:08:09

标签: java regex

我需要替换以下字符串中的引号。

String str = "This is 'test()ing' and test()ing'";

最终输出应为"这是test()和测试()'";

即仅在以' test()开头并以'结尾时才替换。介于两者之间的文字保持不变。

这个没有用。

str = str.replaceAll("^('test())(.*)(')$", "test()$2");

请为此建议合适的正则表达式。

4 个答案:

答案 0 :(得分:4)

这个正则表达式将具有所需的结果:

    str = str.replaceAll("'test\\(\\)(.*?)'", "test()$1");
带有.*?

字符串懒得匹配,并且不匹配整个字符串的结尾。

答案 1 :(得分:1)

看起来你真的想在你的正则表达式中拥有^$锚点(行的开头/结尾)。

除此之外,它会消耗超过你想要的。如果您希望.*停在最早点,它可以继续,您应该让它不情愿地匹配,例如.*?

所以你的正则表达式是:

('test\(\))(.*?)(')

答案 2 :(得分:1)

您可以使用:

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

RegEx Demo

答案 3 :(得分:1)

让中间部分不贪心:

(')(.*?)(')

str = str.replaceAll("(')(.*?)(')", "$2");

如果它始终以test()开头,请添加

str = str.replaceAll("(')(test().*?)(')", "$2");

请检查此example和此one