分离等式的正则表达式

2024-04-20 09:54:43 发布

您现在位置:Python中文网/ 问答频道 /正文

有人有学习更高级正则表达式的好资源吗

我一直有一些问题,我想确保一些东西不是用引号括起来的

也就是说,我正在尝试生成一个表达式,该表达式将匹配包含等式的python文件中的行

a = 4

这很简单,但我在设计一个表达式时遇到了困难,这个表达式能够将多个术语或用引号括起来的术语分开,如下所示:

a, b = b, a
a,b = "You say yes, ", "i say no"

Tags: 文件noyou表达式资源引号yes术语
3条回答

Python有一个非常好的Language Reference,它还包括descriptions of the lexical analysis and syntax。你知道吗

在您的例子中,这两个语句都是assignments,左边是list of targets,右边是list of expressions。你知道吗

但是由于语法部分的某些部分是上下文无关的,并且不是正则的,所以不能使用正则表达式(除非它们支持某种递归模式)。所以最好使用合适的解析器as Jonas H suggested。你知道吗

用正则表达式解析代码通常不是一个好主意,因为编程语言的语法不是正则语言。我不是一个很好的python程序员,但我认为用python模块(如this onethis one)解析python代码会更好

A认为必须对表达式进行标记以进行正确的计算,但是可以使用以下正则表达式检测模式

r'\s+(\w+)(\s*,\s*\w+)*\s*=\s*(.*?)(\s*,\s*.*?)*'

如果组(2)和组(4)不为空,则必须标记表达式

注意如果你有

a,b=f(b,a),g(a,b)

很难分析

相关问题 更多 >