Python 正则表达式需要有两个条件结束条件

Python 正则表达式需要有两个条件结束条件,python,regex,Python,Regex,我需要一个处理不同终端条件的正则表达式,我的想法是这样的,但它不起作用 re.findall(r'(?<=tests\[")(.*)((?="\])|(?=:)', input_string]) 描述 ^测试\[”(.*?(:\s*“\s*[^\].\])) 此正则表达式将执行以下操作: 要求字符串以tests[“ 匹配第一个双引号内的子字符串 例子 现场演示 示例文本 测试[“状态代码:”+responseCode.code]=responseCode.code==200;

我需要一个处理不同终端条件的正则表达式,我的想法是这样的,但它不起作用

re.findall(r'(?<=tests\[")(.*)((?="\])|(?=:)', input_string])
描述
^测试\[”(.*?(:\s*“\s*[^\].\]))

此正则表达式将执行以下操作:

  • 要求字符串以
    tests[“
  • 匹配第一个双引号内的子字符串
例子 现场演示

示例文本

测试[“状态代码:”+responseCode.code]=responseCode.code==200;
测试[“架构验证程序GetTerminalinitEventForHareWareId”]=tv4.validate(数据,架构);
样本匹配

  • 捕获组0获取整个匹配项
  • 捕获组1只获取第一个引号内的值。
    • 如果该值以
      :“
      结尾,后跟非
      ]
      ,则不包括
      和尾随文本
    • 如果该值以
      :“]
      结尾,则包含
      和尾随空格
匹配1
1.[7-18]`身份代码`
比赛2
1.[78-129]`架构验证程序GetTerminalinitEventForHareWareId`
比赛3
1.[169-224]`Schema validator GetTerminalinitEventForHareWareId:`
解释
节点说明
----------------------------------------------------------------------
^“行”的开头
----------------------------------------------------------------------
测试‘测试’
----------------------------------------------------------------------
\[                       '['
----------------------------------------------------------------------
"                        '"'
----------------------------------------------------------------------
(组和捕获到\1:
----------------------------------------------------------------------
.*?除\n(0次或多次)以外的任何字符
(匹配尽可能少的金额)
----------------------------------------------------------------------
)结束\1
----------------------------------------------------------------------
(?:组,但不捕获:
----------------------------------------------------------------------
:                        ':'
----------------------------------------------------------------------
\s*空格(\n、\r、\t、\f和“”)(0
或更多次(与最大金额匹配)
(可能的)
----------------------------------------------------------------------
"                        '"'
----------------------------------------------------------------------
\s*空格(\n、\r、\t、\f和“”)(0
或更多次(与最大金额匹配)
(可能的)
----------------------------------------------------------------------
[^\]]除“\]”以外的任何字符
----------------------------------------------------------------------
|或
----------------------------------------------------------------------
"                        '"'
----------------------------------------------------------------------
\]                       ']'
----------------------------------------------------------------------
)分组结束
----------------------------------------------------------------------

请解释“不起作用”的含义。还有,我看这里没有问题。并使用链接编辑您的问题,而不是在注释中添加代码。@TimPietzcker根据您的建议编辑了我的问题,谢谢您的提示!我仍然看不到问题或问题定义…尽管正则表达式中缺少的右括号是一个相当明显的问题…感谢您提供了一个非常详细的答案,我将来肯定会使用此网站:
tests["Status code: " +responseCode.code] = responseCode.code === 200;
tests["Schema validator GetTerminalInitEventForHarewareIds"] = tv4.validate(data, schema);