首页 > 解决方案 > 正则表达式 - 如果在双引号内,则不匹配单引号

问题描述

我仍在学习正则表达式,但找不到解决问题的方法。我想匹配字符串中的所有单引号,但如果单引号在双引号内则不匹配。

例如,我有一个字符串:

'['hello', "that's great", "Good to see you O'shay"]'

我希望能够匹配周围的单引号'hello',但不能匹配嵌套在双引号内的单引号。

我希望这是有道理的!提前致谢!

编辑

可以获取字符串,而不是匹配单引号,即

'['hello', "that's great", "Good to see you O'shay"]'

'[hello, that's great, Good to see you O'shay]'

不确定这是否会使问题变得更容易或更难?欢迎开导!

标签: pythonregex

解决方案


不是纯正则表达式解决方案。主要是将字符串细分为部分,然后删除不需要的部分:

test = '''['hello', "that's great", "Good to see you O'shay"]'''


import re

parts = re.split(r"(\"[^\"]*\"|'[^']*')", test)

parts = [p for p in parts if p.startswith("'")]

print(parts)

推荐阅读