0

有谁知道一个免费的网站或程序,它将接受一个字符串并用适当的转义字符引用它?

例如,假设我想引用

人们常说“开发人员不知道如何引用嵌套的“引用字符串””。

我想指定是用单引号还是双引号括起来。除了反斜杠之外,我个人不关心任何转义字符,但其他人的可能。

4

4 回答 4

2

如果字符串的双引号都没有被转义,您可以简单地执行以下操作:

str = str.replace(/"/g, "\\\"");

否则,您应该检查它是否已经被转义并仅在没有被转义时替换;您可以为此使用lookbehind。以下是我首先想到的,但对于像这样的字符串它会失败escaped backslash followed by quotes \\" :(

str = str.replace(/(?<!\\)"/g, "\\\"");

以下确保倒数第二个字符(如果存在)不是反斜杠。

str = str.replace(/(?<!(^|[^\\])\\)"/g, "\\\"");

更新:只记得JavaScript 不支持后视;您可以在 perl/php/.net 等支持正则表达式的后视引擎上使用相同的正则表达式。

于 2010-06-29T07:27:02.637 回答
2

任何体面的编程语言中的任何体面的正则表达式库都将具有执行此操作的功能-并不是说自己很难编写一个(正如其他答案所表明的那样)。因此,拥有一个单独的网站或程序来做这件事几乎是没有用的。

  • Perl有这个quotemeta功能
  • PCRE 的 C++ 包装器有一个功能RE::QuoteMeta(警告:该链接上的巨型文件),它做同样的事情
  • preg_quote如果您使用与 Perl 兼容的正则表达式,PHP 就有
  • Python的re模块有一个escape功能
  • 在Java中,java.util.regex.Pattern类有一个quote方法
  • Perl 和大多数其他基于 Perl 的正则表达式引擎都有元字符\Q...\E,这意味着介于两者之间的任何内容都\Q\E字面意思解释
  • 大多数使用 POSIX 正则表达式(例如grep)的工具都有一个选项,可以让它们将输入解释为文字字符串(例如grep -F
于 2010-06-29T07:47:57.930 回答
1

在 Python 中,用单引号括起来:

import re
mystr = """It's often said that "devs don't know how to quote nested "quoted strings""."""
print("""'%s'""" % re.sub("'", r"\'", mystr))

输出:

'It\'s often said that "devs don\'t know how to quote nested "quoted strings"".'

您可以轻松地将其调整为更通用的形式,和/或将其包装在脚本中以进行命令行调用。

于 2010-06-29T07:26:23.543 回答
-1

所以,我想答案是“不”。对不起,伙计们,但我没有学到任何我不知道的东西。可能是我没有正确表达问题的错。

为所有发帖的人 +1

于 2010-07-02T11:13:51.600 回答