【问题标题】:How to make regex to check single quotes?如何使正则表达式检查单引号?
【发布时间】:2020-11-20 07:04:01
【问题描述】:

我只想将单引号替换为双引号,但是当我尝试使用正则表达式时,它也会将双引号替换为两个双引号。

我使用([']) 作为正则表达式,但双引号也返回true。

  • 例如:当我通过时 -> 不要:它工作正常
  • 但是当我通过时 -> don''t : 它不能正常工作,最终输出变成了 don''''t

我只想将单引号转换为双引号。我该怎么做?

【问题讨论】:

  • 如果您不发布代码,我们如何为您提供帮助...发布代码!
  • 使用(?<!')'(?!')
  • 为什么要使用正则表达式?
  • 只是我需要正则表达式来检查单引号先生,以前我使用 ([']) 作为正则表达式,但它也返回 true 用于双引号
  • 当您说 双引号 并谈论一对 单引号 '(又名 apostrophes)时,这会非常令人困惑,而不是独立双引号"(又名quotation mark)。

标签: java regex string regex-group


【解决方案1】:

显然,“双引号”是指“双单引号”。

您可以使用以下模式:

(?<!')'(?!')

查找未跟在或前面没有另一个单引号的单引号(使用否定的 Lookbehind 和否定的 Lookahead)。然后您只需将其替换为''

Demo.

Java 示例:

String s = "don't, don''t";
String output = s.replaceAll("(?<!')'(?!')", "''");
System.out.println(output);   // Prints "dont''t don''t"

Try it online.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2015-12-07
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多