gpt4 book ai didi

python - 匹配所有包含的正则表达式 ''(2 个单引号)

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:30 26 4
gpt4 key购买 nike

我正在寻找一个正则表达式,它将为我提供捕获组,用于作为逗号分隔列表一部分的单引号字符串 ('string')。例如字符串 'tom''s' 将在 ms 之间有一个单独的组。我已经接近了,但由于错误地与封闭的单引号匹配或仅捕获字符串中的 2 个单引号中的一些单引号而不断被绊倒。

示例输入

'11','22'',','''33','44''','''55''','6''''6'

所需的组(7,显示在括号中)

 '11','22(''),','('')33','44('')','('')55('')','6('')('')6'

对于上下文,我最终尝试做的是将逗号分隔的字符串序列中的这 2 个单引号替换为另一个值,以使后续解析更容易。

另请注意,逗号可能包含在单引号字符串中。

最佳答案

您不能像 Python re 模块那样匹配双引号。您可以只匹配单引号条目并捕获每个条目的内部部分,并使用 lambda 将内部的 '' 替换为 .replace:

import re
p = re.compile(r"'([^']*(?:''[^']*)*)'")
test_str = "'11','22'',','''33','44''','''55''','6''''6'"
print(p.sub(lambda m: "'{}'".format(m.group(1).replace("''", "&")), test_str))

参见 IDEONE demo , 输出:'11','22&,','&33','44&','&55&','6&&6'

正则表达式是 '([^']*(?:''[^']*)*)' :

  • ' - 打开'
  • ( - 捕获组 #1 开始
  • [^']* - 零个或多个非'
  • (?:''[^']*)* - 0+ 个 '' 序列后跟 0+ 个非 '
  • ) - 捕获组 #1 结束
  • ' - 结束 '

关于python - 匹配所有包含的正则表达式 ''(2 个单引号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35783725/

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