gpt4 book ai didi

Python 正则表达式 : issues in skipping delimiter between quotes

转载 作者:行者123 更新时间:2023-12-01 09:05:48 25 4
gpt4 key购买 nike

我是正则表达式的新手,并尝试根据(和/或)作为分隔符进行拆分

我使用了:https://stackoverflow.com/a/18893443/5164936中提供的解决方案

并将我的正则表达式修改为:

re.split(r'(\s+and\s+|\s+or\s+)(?=(?:[^"]*"[^"]*")*[^"]*$)', s)

对于我的大多数用例来说,除了以下输入之外,它就像一个魅力:

'col1 == "val1" or col2 == \'val1 and " val2\''

对于这种特殊情况,分割失败,我尝试使用不同的组合修改上述正则表达式,但没有成功。有人可以帮忙修复这个正则表达式吗?

最佳答案

您可以使用PyPi regex基于的解决方案:

import regex

s = 'col1 == "val1" or col2 == \'val1 and " val2\''
res = regex.split(r'''(?V1)(?:"[^"]*"|'[^']*')\K|(\s+(?:and|or)\s+)''', s)
print([x for x in res if x])
# => ['col1 == "val1"', ' or ', 'col2 == \'val1 and " val2\'']

请参阅Python demo online .

详细信息

  • (?V1) - 允许以零长度匹配进行分割的标志
  • (?:"[^"]*"|'[^']*')\K - 双引号或单引号之间的子字符串,使用\K match reset operator (因此,当此模式匹配时,匹配的是空字符串)
  • | - 或
  • (\s+(?:and|or)\s+) - 1+ 个空格,andor 以及 1+ 个空格.

关于Python 正则表达式 : issues in skipping delimiter between quotes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52059515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com