【问题标题】:regex to match double qoutes not followed by odd number of backslash正则表达式匹配双引号,后跟奇数个反斜杠
【发布时间】:2020-12-04 14:29:03
【问题描述】:

我想用空字符串替换不带奇数反斜杠的双引号。

例如:

字符串:"hello \" world \\""hello \\\" world\\\\"
正则表达式:?
结果:hello \" world \\hello \\\" world\\\\ (替换为空字符串后)

同时\\\"\"替换
我只需使用 regex\\\" 就可以做到这一点

我需要正则表达式来替换 " 而不是奇数的 \ 。我正在制作一个简单的解析器,它忽略“”中的字符串
所以,有人帮忙。

【问题讨论】:

  • 嘿,StackOverflow 不是免费的代码服务。您至少应该尝试解决问题,如果遇到困难,我们可以帮助您,但我们不会为您完成所有工作。
  • 我知道,我在网上搜索过它,我也尝试了很多正则表达式和环视,但是我无法得到上述结果。

标签: java regex replaceall


【解决方案1】:

这个正则表达式会给你准确的结果 它应该是 + 而不是 {0,20} 但 java 不允许这样做, 因此,您可以将预期 \ 的最大预期数量加倍而不是 20

    String text = "\"hello \\\" world \\\\\" , \"hello \\\\\\\" world\\\\\\\\\"";
    String newText = text.replaceAll("(?<!(?<!\\\\)(\\\\)(\\\\\\\\){0,20})\"", "");
    System.out.println("newText = " + newText);

【讨论】:

  • 你能解释一下这个正则表达式吗,因为我不明白为什么有两个后视和 4 个反斜杠(一个在后视,另一个在捕获组中)
猜你喜欢
  • 2020-10-28
  • 2012-07-30
  • 2016-12-13
  • 2019-08-26
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 2014-02-04
相关资源
最近更新 更多