gpt4 book ai didi

python - 使用正则表达式查找重复操作数 - Python

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:06 25 4
gpt4 key购买 nike

我正在尝试通过文件表达式查找,例如 A*B

A 和 B 可以是 [A-Z] 中的任意值[a-z] [0-9]并且可能包括 < > ( ) [ ] _ .等但不是逗号分号空格换行符或任何其他算术运算符(+ - \ *) .这些是 8 个分隔符。 A 和 * 和 B 之间也可以有空格。而且左括号的数量需要与 A 和 B 中的右括号的数量相同。

我尝试这样的事情没有成功(不考虑 A 和 B 中的运算符):

import re
fp = open("test", "r")
for line in fp:
p = re.compile("( |,|;)(.*)[*](.*)( |,|;|\n)")
m = p.match(line)
if m:
print 'Match found ',m.group()
else:
print 'No match'

示例 1:

(A1 * B1.list(), C * D * E)应该给出 3 个匹配项:

  1. A1 * B1.list()
  2. C * D
  3. D * E

问题陈述的扩展可以是逗号分号空格换行符或任何如果在 backets 内,则 A 和 B 中允许其他算术运算符 (+ -\*):

示例 2:

(A * B.max(C * D, E))应该给出 2 个匹配项:

  1. A * B.max(C * D, E)
  2. C * D

我是正则表达式的新手,很想找到解决这个问题的方法。

最佳答案

正则表达式有限制。正则表达式和文本解析之间的界限可能很紧密。 IMO,在您的情况下,使用解析器是更强大的解决方案。

问题中的示例表明递归模式。在此领域,解析器再次优于正则表达式。

查看建议的解决方案:Equation parsing in Python .

关于python - 使用正则表达式查找重复操作数 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32183589/

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