regex - 获取包含在特殊字符 « 和 » 中的字符串之外的所有双引号字符

标签 regex python-3.x

我想从封闭字符 « 和 » 之外的所有子字符串中获取所有双引号,并将它们替换为转义字符后跟双引号,即。\"举个例子

输入字符串:

'The first generally recognized "wiki" application,«"WikiWikiWeb"», was created by American computer programmer "Ward Cunningham" in 1994'

预期输出:

'The first generally recognized \"wiki\" application,«"WikiWikiWeb"», was created by American computer programmer \"Ward Cunningham\" in 1994'

我尝试了以下代码。

string = '''The first generally recognized "wiki" application,«"WikiWikiWeb"», was created by American computer programmer "Ward Cunningham" in 1994'''

import re
arr = re.findall(r'(.*?)\«.*?\»', string)
for tag in arr :
 new_tag = tag.replace('"','\\"')
 string = string.replace(tag, new_tag)

Output: The first generally recognized \"wiki\" application,«"WikiWikiWeb"», was created by American computer programmer "Ward Cunningham" in 1994

这段代码的问题是正则表达式没有给我所有的子字符串,在本例中是第二个子字符串。预期结果必须是:

['第一个公认的“wiki”应用程序',',由美国计算机程序员“Ward Cunningham”于 1994 年创建']。

我想要正则表达式,它应该给我子字符串中的所有引号,而不是在封闭特殊字符之外的子字符串本身。

最佳答案

string = '''The first generally recognized "wiki" application,«blah"WikiWikiWeb"blah», was created by American computer programmer "Ward Cunningham" in 1994'''

import re
arr = re.findall(r'«.*?»|(".+?")', string)
for tag in arr :
  new_tag = tag.replace('"','\\"')
  string = string.replace(tag, new_tag)

print string

输出:

The first generally recognized \"wiki\" application,«blah"WikiWikiWeb"blah», was created by American computer programmer \"Ward Cunningham\" in 1994

关于regex - 获取包含在特殊字符 « 和 » 中的字符串之外的所有双引号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57175963/

相关文章:

python - 检查 2d 数组是否存在于 Python 中的 3d 数组中?

javascript - 增加字符串中的最后一个数字

使用正则表达式的 Java 数组洞

java - 如何不匹配此正则表达式中的第一个空字符串?

Java 正则表达式、匹配和查找

python-3.x - 运行 AWS sam 本地调用时 Python 未找到模块

python - 更简单的 python 等同于 R 风格的 grep,包括多个要匹配的东西

python - 对每一行的 pandas 列进行排序

arrays - 使用 np.savetxt 保存包含字符串和 float 的结构化 numpy 数组

python-3.x - 在哪里用 virtualenvwrapper-win 定义 postactivate 钩子(Hook)?