Regex 查找引用字符串生成器

Regex 查找引用字符串生成器,regex,language-agnostic,quotes,magic-quotes,Regex,Language Agnostic,Quotes,Magic Quotes,有谁知道有一个免费的网站或程序会接受一个字符串并用适当的转义字符引用它 比如说,我想引用 It's often said that "devs don't know how to quote nested "quoted strings"". 人们常说“开发人员不知道如何引用嵌套的“引用字符串”。 我想具体说明是用单引号还是双引号括起来。我个人不喜欢反斜杠以外的任何转义字符,但其他人可能会喜欢。在Python中,用单引号括起来: import re mystr = """It's often s

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

比如说,我想引用

It's often said that "devs don't know how to quote nested "quoted strings"". 人们常说“开发人员不知道如何引用嵌套的“引用字符串”。
我想具体说明是用单引号还是双引号括起来。我个人不喜欢反斜杠以外的任何转义字符,但其他人可能会喜欢。

在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"".'

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

在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"".'

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

如果字符串的双引号都没有转义,您只需执行以下操作:

str = str.replace(/"/g, "\\\"");
否则,您应该检查它是否已经转义,只有在它没有转义时才进行替换;你可以用lookback来做这件事。下面是我首先想到的,但是对于像
转义反斜杠后跟引号\\“:(

str=str.replace(/(?)?

更新:请记住,JavaScript不支持look-behind;您可以在支持正则表达式引擎的look-behind上使用相同的正则表达式,如perl/php/.net等。

如果字符串的双引号都没有转义,您只需执行以下操作:

str = str.replace(/"/g, "\\\"");
否则,您应该检查它是否已转义,只有在它未转义时才进行替换;您可以使用lookbehind进行替换。我首先想到的是以下内容,但对于像
转义反斜杠后跟引号\\“:(

str=str.replace(/(?)?

更新:请记住,JavaScript不支持look-behind;您可以在look-behind上使用相同的正则表达式,支持正则表达式引擎,如perl/php/.net等。

任何一种像样的编程语言中的任何像样的正则表达式库都有一个函数来实现这一点,这并不意味着您自己编写一个正则表达式很困难(正如其他答案所指出的那样)。因此,有一个单独的网站或程序来做这件事几乎是无用的

  • Perl具有
  • <> PCRE的C++包装器有一个函数(警告:在那个链接上的巨文件),它做同样的事情
  • 如果您使用的是与Perl兼容的正则表达式,则PHP具有
  • Python有一个
    escape
    函数
  • 在Java中,
    Java.util.regex.Pattern
    类具有
  • Perl和大多数其他基于Perl的正则表达式引擎都有元字符
    \Q…。\E
    ,这意味着
    \Q
    \E
    之间的任何内容都会被逐字解释
  • 大多数使用POSIX正则表达式的工具(例如
    grep
    )都有一个选项,可以让它们将输入解释为文本字符串(例如
    grep-F

任何一种像样的编程语言中的任何像样的正则表达式库都会有一个函数来实现这一点——这并不是说自己编写一个正则表达式库很困难(正如其他答案所指出的那样)。因此,拥有一个单独的网站或程序来完成这项工作几乎毫无用处

  • Perl具有
  • <> PCRE的C++包装器有一个函数(警告:在那个链接上的巨文件),它做同样的事情
  • 如果您使用的是与Perl兼容的正则表达式,则PHP具有
  • Python有一个
    escape
    函数
  • 在Java中,
    Java.util.regex.Pattern
    类具有
  • Perl和大多数其他基于Perl的正则表达式引擎都有元字符
    \Q…。\E
    ,这意味着
    \Q
    \E
    之间的任何内容都会被逐字解释
  • 大多数使用POSIX正则表达式的工具(例如
    grep
    )都有一个选项,可以让它们将输入解释为文本字符串(例如
    grep-F
所以,我想答案是“不”。对不起,伙计们,我没有学到任何我不知道的东西。可能是我的错,没有正确地表达问题

+1对于每个发帖子的人,我猜答案是“不”。对不起,伙计们,我没有学到任何我不知道的东西。可能是我的错,没有正确地表达问题


+1对于每个发布

的人来说,任何编辑器都可以进行搜索/替换,这还不够吗?适用于什么?必须使用的确切转义约定取决于语言…Shell脚本?Perl?Php?Python?Tcl?您能更好地解释您的要求吗?您可能想转义其他字符…如果您的字符串包含backsl怎么办ash、换行符或其他?您将如何使用字符串?任何编辑器都可以执行搜索/替换,这还不够吗?适用于什么?必须使用的确切转义约定取决于语言…Shell脚本?Perl?Php?Python?Tcl?您能更好地解释您的要求吗?您可能想要转义其他字符…如果您的string包含反斜杠、换行符或其他内容?您将如何使用字符串?这些都是很好的建议,但仍取决于输出将用于什么:这些将适用于正则表达式,有时适用于双引号字符串,但通常不适用于单引号字符串,例如……嗯,我想我只是误解了这个问题询问正则表达式。这些都是很好的建议,但它仍然取决于输出将用于什么:这些将适用于正则表达式,有时适用于双引号字符串,但通常不适用于单引号字符串,例如……嗯,我想我误解了这个问题,因为我只是询问正则表达式。