正则表达式匹配一个或两个引号,但不是连续三个

Nic*_*ole 8 regex string quotes

对于我的生活,我无法想象这一个.

我需要搜索以下文本,仅匹配粗体引号:

不匹配:"""这是一个python docstring"""

匹配:"这是一个常规字符串"

匹配:"" ←这是一个空字符串

我怎么能用正则表达式做到这一点?

这是我尝试过的:

不起作用:

(?!"")"(?<!"")
Run Code Online (Sandbox Code Playgroud)

关闭,但不匹配双引号.

不起作用:

"(?<!""")|(?!"")"(?<!"")|(?!""")"
Run Code Online (Sandbox Code Playgroud)

我天真地认为我可以添加我不想要的替代品,但逻辑最终会逆转.这个匹配所有内容,因为所有引号至少匹配一个替换项.

(请注意:我没有运行代码,因此使用的解决方案__doc__无济于事,我只是想在我的代码编辑器中查找和替换.)

h2o*_*ooo 18

您可以使用 /(?<!")"{1,2}(?!")/

DEMO

尸检:

  • (?<!")文字的负面观察".比赛不能在前面有这个角色
  • "{1,2}文字"匹配一次或两次
  • (?!")文字的负面预测".之后的比赛不能有这个角色

你的第一次尝试可能会失败,因为这(?!")是一个负面的预测,并且(?<!")是一个负面的后视.在比赛开始之前先进行预测,或在比赛结束后进行后视是没有意义的.

正则表达式可视化