【问题标题】:Query regarding regex for quotes查询有关正则表达式的报价
【发布时间】:2022-01-06 18:48:09
【问题描述】:

我有一个形式的字符串:

"String \\r\\n more text \\ \\ \" abc "

在这个字符串中,我想删除所有反斜杠,除了带引号的反斜杠,即\"。有什么方法可以为它写一个正则表达式。我希望我的最终字符串看起来像

"String rn more text   \" abc "

我尝试使用:'\\[^\"]*',但没有帮助

【问题讨论】:

  • "使用与反斜杠匹配的正则表达式和负前瞻。
  • 所以你的预期输出是"String rn more text \" abc \""?
  • 你的意思是这样的'[^\"]*'
  • @JoranBeasley:是的
  • 这里要小心,因为很容易将数据的表示与数据的内容混淆。例如,如果您的字符串恰好按照您显示它的方式打印,它可能根本不包含任何双反斜杠,并且可能不包含“反斜杠双引号”。当 Python 将字符串显示为 "\\r\\n" 时,它包含 4 个字符:反斜杠 "r" 反斜杠 "n"。它只是将反斜杠显示为双倍。那么,您究竟是如何显示该字符串的?

标签: python regex


【解决方案1】:

如前所述,仅使用负前瞻

re.sub('\\(?!")','',myString)

这匹配一个反斜杠......只要它后面没有引号(但只匹配一个字符)

另请参阅:https://www.geeksforgeeks.org/python-regex-lookahead/

另外,我会明智地注意@timroberts 的评论...您需要真正确定字符串中的实际内容...

【讨论】:

  • 你能不能也解释一下。我是正则表达式的新手,所以理解将非常有用。你的意思是负前瞻?!
  • 是的,这是正确的
猜你喜欢
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多