python - 正则表达式 - 替换除特定字符串之外的特定字符

标签 python regex

我很难弄清楚如何用 '' 替换每个空格,除非出现在 "" 之间。

例如——

a = c + d;

a=c+d

foo ("hi bye",        "bye    hi");

foo("hi bye","bye    hi");

我试过类似的东西

re.sub('^(\"[^\"\n]*\")|\s|\\n', '', line)

但显然那是行不通的。

最佳答案

查找:

r'(".*?")|(\s+)'

替换:

r'\1'

想法是忽略引号内的所有字符,方法是首先将所有引号与内部的内容 (".*?") 匹配并替换为相同的内容 (\1 ).

我们知道剩下的空格 (\s+) 不会在引号内(或者第一条规则会匹配它们)并且将这些空格替换为空。


See it in action

关于python - 正则表达式 - 替换除特定字符串之外的特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41042694/

相关文章:

python - 第二类不恰当积分

python-3.x - 删除方括号和大括号中不必要的空格

python - 如何在 Python 中将文本写在图像上,并在其上覆盖另一个图像?

python - 将预构建的查询附加到 SQLAlchemy 中的scoped_session

Python Selenium Webdriver - 代理身份验证

regex - 如何在记事本中删除换行符并用逗号替换它们

c# - 为什么 C# RegEx 类不尊重 Environment.NewLine?

javascript - 正则表达式匹配字符串中的多个数字

用于在多行文本区域中搜索表达式的 Javascript 正则表达式

python - 在拆分器中设置 pyqt 小部件的初始宽度