gpt4 book ai didi

python - 正则表达式匹配一行但不包含输出中的字符串

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

我正在尝试解析 SQL 查询连接条件。我需要提取包含 (+) 的行,并根据 extract 将其分组。我正在使用 python 3.6

以下是我的测试字符串:

  1.  a.deptno = b.dept_no(+)
2. c.deptno(+)=b.dept_no
3. a.deptno(+)= 900

First : I need to extract lines which has (+) second : Need to extract the alias for example

1. a , b
2. c , b
3. a

到目前为止我已经尝试过regex

使用 ([\w_]+).*?([\w_]+)\(\+\) 我能够提取第一组,但第二组似乎有一些问题。

任何建议都会非常有帮助

最佳答案

使用 positive lookahead 可以做什么? (?= 断言字符串包含 (+)

然后您可以在捕获组中匹配您的值。

^(?=.*\(\+\))(\w+)\.[^=]+=\s*(?:(\w+)\.)?.*$

匹配:

  • ^ 行的开头
  • (?=.*\(\+\)) 正向前瞻断言接下来的内容包含 (+)
  • (\w+)\. 在一组中捕获一个或多个单词字符(组 1),后跟一个点
  • [^=]+ 一次或多次不匹配 = 符号
  • =\s* 匹配 = 符号及其后的零个或多个空格字符
  • (?: 非捕获组
    • (\w+)\. 在一组中捕获一个或多个单词字符(组 2),后跟一个点
  • )? 关闭非捕获组并使其可选
  • .*$ 匹配任意字符零次或多次,直到行尾 $

关于python - 正则表达式匹配一行但不包含输出中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49752344/

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