从Java中的String中删除第二个单引号

时间:2017-12-06 21:53:33

标签: java regex

我正在尝试在spring boot中格式化XML响应

在此回复中,我想转换为 TitleBrief='arg Nallin' 106 HD'TitleBrief='arg Nallin 106 HD'

我必须使用Regex才能做到这一点。请建议一个好的正则表达式。

我试过了,但它没有用。

String test="='Narg Mallin' '";
String pattern1="(=')(.[^']*)'";
System.out.println(test.replaceAll("(=')","=\"");

1 个答案:

答案 0 :(得分:0)

实际上,ctwheels的正则表达式是解决这个问题的一种非常简单的方法,你可以像这样使用它:

String test = "'arg Nallin' 106 HD'";
test.replaceAll("(?<!=)'(?!$)",""); // Returns "'arg Nallin 106 HD'"

但是,在其他不支持lookbehinds(例如JavaScript)的编程语言中,这可能是您正在寻找的:

作为替代方案,您可以捕获所有文本,但需要删除的引号除外。

代码

String test = "'arg Nallin' 106 HD'";
test.replaceAll("^([^']*'[^']*)'(.*'.*)$","$1$2"); // Returns "'arg Nallin 106 HD'"

解释

/^([^']*'[^']*)'(.*'.*)$/
  • ([^']*'[^']*) - 第一个捕获组将:

    1. [^']* - 匹配除单引号外的所有内容。
    2. ' - 匹配您需要忽略的单引号。
    3. [^']* - 匹配除单引号外的所有内容。
  • ' - 现在,此引号不在其他捕获组中,因此$1中不会出现,$2

  • (.*'.*) - 在引用后捕获其余内容,并确保至少剩下一个',因此我们可以确保该语句是String的实例